폭탄과 구급 상자 - Bomb Pickup, Bomb

|

bombCrate -> crate, parachute

FloatDown 애니(떨어질때 흔들흔들하는모션) 와 BombLanding(떨어지고 나서 낙하산이 없어지는모션) 애니로 구성되있음






landed -> 현재 땅인지 체크

폭탄은 서클 콜라이더와 박스 콜라이더로 구성되있고 서클콜라이더는 is Trigger 체크 되있음

그래서 OnTriggerEnter 함수를 호출할수잇음. 박스콜라이더는 땅과 부딪히게 할려고 부착한 상태인듯. isTrigger 시 충돌 무시해버리고 통과되기때문.


Player 와 부딪힐 경우에는 플레이어의 폭탄 개수를 늘려주고 삭제해버림.


그리고 땅과 부딪힐경우에는 else if(other.tag == "ground" && !landed)


Ladn 애니메이션을 실행시키고

Create 폭탄의 부모 오브젝트를 null값으로 만들어준다.

그리고 리지드바디를 추가시킴(추가가 안될시 플레이어와 물리효과를 집어널수없기때문,.)





explosionParticle -> 은 히어라이키에 한개만 존재함 이함수를 재활요해서 계속 사용함





폭탄관련함수

if(transform.root == transform)

StartCoroutine(BombDetonation());

플레이어가 알트 버튼을 눌러서 폭파 시킬때 실행됨 최상위 오브젝트가 없을때(Create일때) -> LayBombs 스크립트에서 실행






Explode() -> 외부에서 실행됨 폭탄이 내려오는데 플레이어가 총으로 맞춘다던가

bombLaid 를 false로 만들어줌.

pickupSpawner -> 픽업매니저 스크립트 -> PickupSpawner 구급상자와 폭탄 생성



pickupSpawner.StartCoroutine(pickupSpawner.DeliverPickup()); -> 아이템 재생성


Collider2D[] enemies = Physics2D.OverlapCircleAll(transform.position, bombRadius, 1 << LayerMask.NameToLayer("Enemies"));

반경 원안에 있는 적들 배열에 집어넣기
foreach(Collider2D en in enemies)
{
// Check if it has a rigidbody (since there is only one per enemy, on the parent).
Rigidbody2D rb = en.rigidbody2D;
if(rb != null && rb.tag == "Enemy")
{
// Find the Enemy script and set the enemy's health to zero.
rb.gameObject.GetComponent<Enemy>().HP = 0;

// Find a vector from the bomb to the enemy.
Vector3 deltaPos = rb.transform.position - transform.position;

// Apply a force in this direction with a magnitude of bombForce.
Vector3 force = deltaPos.normalized * bombForce;
rb.AddForce(force);
}
}



적들의 체력을 0으로 만들고 적들을 튕겨내버림



explosionFX.transform.position = transform.position;

explosionFX.Play();


이펙트 위치 설정 및 실행











플레이어에 붙어있는 스크립트


bombLaid -> 폭탄 발사여부 - > Explode 함수가 실행되야 false로 변함 

bombCount -> 폭탄 개수

알트 버튼 누르면 발사






Trackback 0 And Comment 0