티스토리 뷰

728x90
반응형

 

타이틀 이미지

Unity에서 총알 발사 및 충돌 처리하기

Unity에서 게임을 제작할 때, 총알을 발사하고 충돌을 처리하는 기능은 가장 기본적이면서도 중요한 기능 중 하나입니다. 이번 글에서는 C# 스크립트를 활용하여 어떻게 총알을 발사하고, 충돌했을 때 어떻게 처리하는지를 알아보겠습니다.

총알 발사

총알 발사는 Unity에서 특히나 빈번하게 사용됩니다. 이 작업을 위해서는 총알 프리팹(Prefab)과 발사 위치가 필요합니다. 기본적으로 Instantiate 를 통해 총알을 생성합니다.

using UnityEngine;

public class Gun : MonoBehaviour
{
    public GameObject bulletPrefab;   // 총알 프리팹
    public Transform firePoint;       // 총알이 생성될 위치
    public float bulletSpeed = 20f;   // 총알 속도

    void Update()
    {
        // 스페이스바를 누르면 총알 발사
        if (Input.GetKeyDown(KeyCode.Space))
        {
            Shoot();
        }
    }

    void Shoot()
    {
        GameObject bullet = Instantiate(bulletPrefab, firePoint.position, firePoint.rotation);
        Rigidbody2D rb = bullet.GetComponent<Rigidbody2D>();
        rb.velocity = firePoint.up * bulletSpeed;
    }
}

위의 스크립트에서는 스페이스바를 눌렀을 때 Shoot 메소드가 호출되며, Instantiate 를 통해 총알 프리팹을 firePoint 위치에서 생성하고 초기 속도를 설정하여 발사합니다.

총알과의 충돌 처리

총알이 다른 오브젝트와 충돌했을 때 발생할 이벤트 또한 중요한 요소입니다. 충돌 이벤트를 처리하기 위해서는 OnTriggerEnter2D 또는 OnCollisionEnter2D 메소드를 사용하여 충돌을 감지합니다.

using UnityEngine;

public class Bullet : MonoBehaviour
{
    void OnTriggerEnter2D(Collider2D hitInfo)
    {
        // 충돌된 오브젝트의 정보를 얻어온다.
        Debug.Log(hitInfo.name);

        // 충돌된 오브젝트가 'Enemy' 태그를 가졌다면 파괴한다.
        if (hitInfo.CompareTag("Enemy"))
        {
            Destroy(hitInfo.gameObject); // 적 오브젝트 파괴
        }

        // 총알을 파괴한다.
        Destroy(gameObject);
    }
}

위 코드는 총알에 대한 충돌을 처리하는 예제입니다. OnTriggerEnter2D 함수를 통해 다른 콜라이더에 닿았을 때 해당 정보를 얻어서, 특정한 태그가 있는 경우 해당 오브젝트와 자신(총알)을 파괴합니다.

Tip: 총알이 다른 오브젝트와 충돌하면 파괴되도록 하여 메모리 누수를 방지하는 것이 좋습니다.
⚠️ 주의: 총알의 리지드바디(Rigidbody)는 적절한 물리 설정(Rigidbody2D 또는 Rigidbody)과 콜라이더(Collider)가 필요합니다.

마무리

Unity에서의 총알 발사와 충돌 처리는 게임의 상호작용을 풍부하게 만듭니다. 기본적인 스크립트와 메소드를 잘 이해하고, 다양한 상황에 맞게 응용해보세요.

728x90
반응형
LIST
글 보관함
최근에 올라온 글
160x600