티스토리 뷰
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
'Unity > C# 개발 노트' 카테고리의 다른 글
Unity에서 플레이어 체력 시스템 구현하기 (0) | 2025.04.06 |
---|---|
OnCollisionEnter vs. OnTriggerEnter: Unity에서의 충돌 감지와 이벤트 실행 (0) | 2025.04.05 |
UnityEngine.UI 버튼으로 캐릭터 조작하기 (0) | 2025.04.05 |
유니티에서 점프 기능 구현하기 (0) | 2025.04.03 |
Unity를 활용한 적 AI 기본 구현: 플레이어를 쫓아오는 적 (0) | 2025.04.03 |
글 보관함
최근에 올라온 글
160x600