초간단 유니티 폭팔효과 구현하기
유니티로 게임개발할때 폭팔하는 효과를 주고 싶을때가 있어요. 저는 주로 객체에 폭팔반경만큼의 Circle Collision 컴포넌트를 하나 만들어서 비활성화 해 놓고 실제 폭팔이 필요할때 이 객체를 Active 해주는 방법을 사용했었는데요,
이렇게 하니까 간혹 폭팔이 감지가 안될때가 있어서 이제는 아래 코드처럼 방법을 바꿔서 사용한답니다.
제가 사용했던 예제 코드를 올려 보아요.
public class Oil : MonoBehaviour
{
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.tag == "Cannon")
{
// 폭팔효과
GameObject toInstance = Resources.Load<GameObject>("Prefabs/Explosion");
GameObject explosion = Instantiate(toInstance, transform.position, transform.rotation);
explosion.transform.localScale = new Vector3(3, 3, 3);
// 폭팔범위 지정 및 물리충돌감지
Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position, 3.0f);
foreach (Collider2D hit in colliders)
{
Enermy myParent = hit.GetComponentInParent<Enermy>();
if (myParent != null)
myParent.GetComponent<Enermy>().TakeDamage(2); // 범위내 적에게 데미지 선사
}
}
}
}
코드를 잠깐 설명하자면,
지금 저기 Oil 이라고 생성된 객체에 포탄이 날라와서 맞으면 지금 Oil이 폭팔하는 것 처럼 효과를 나타낼껀데요,
코드에서 저 붉은색으로 표시된 부분이 폭팔효과를 구현하는 코드입니다.
transform.position : 폭팔이 일어나는 위치
3.0f : 폭팔의 범위(마음대로 조정하면됩니다. 폭팔력이 크면 더 큰 수로 5.0, 10.0등등 작으면 1.0 2.0처럼 작게.
그리고 저 폭팔의 범위안에 있는 Object 들이 차례로 걸려나오니, 폭팔의 효과를 받을 객체는 저 foreach 문 안에서 처리해주면 되겠지요.
'개발 > 앱' 카테고리의 다른 글
풋볼데이 무과금 첼시 18덱 (버그발생 선물이 또 기다려져요) (2) | 2017.04.12 |
---|---|
추억의 게임 'Gold Miner' (0) | 2017.04.12 |
[MewnBase] 우주에서 살아남기 - 극한 생존 게임 (0) | 2017.04.10 |
무과금 클래시오브클랜 자랑질 아하하하 이정도 레벨까지 왔어요 (0) | 2017.04.06 |
유니티 물리객체 충돌 무시하는 방법 (0) | 2017.04.03 |
혼자하는 모바일 게임 '탱크2D' 안드로이드 전용 게임 (0) | 2017.03.30 |
유니티 CommandInvokationFailure 해결방법 (5) | 2017.03.30 |
아재의 추억거리 - 오락실게임 블러드 브라더스(Blood Bros) (0) | 2017.03.27 |
최근댓글