게임 총알
게임 총알 (Game Bullet)
총알을 발사하는 총, 비행기, 대포, 전함 등과 같은 발사체 객체는 존재한다고 가정!
총알 객체 Prefab 만들기
Unity Hierarchy 창에서 오른쪽 마우스 클릭 > 3D Object > Sphere 클릭
Bullet이라고 Name 변경
(필요시) Hierarchy 창에서 Bullet 선택 > Inspector 창 > Transform 내 Scale 변경
총알에 물리엔진 적용하기 위해 Inspector 창 > Add Component > RigidBody 클릭하여 RigidBody Component 추가
Bullet을 Drag해서 Project 창의 Prefab 폴더로 Drop해서 Prefab으로 만들어 재사용.
Hierarchy 창 Bullet 클릭하여 Delete.
총알 발사 위치 설정하기
발사체 객체에서 총알이 발사되는 위치 설정
Hierarchy 창에서 오른쪽 마우스 클릭 > Create Empty 클릭
ShootPos이라고 Name 변경
(Scene창에서 총알 발사 위치 설정) Hierarchy 창에서 ShootPos 선택 > Inspector 창 > Transform 내 Position 변경 확인
(총, 비행기, 대포, 전함 등이 이동할 때 발사 위치도 같이 이동위해 ShootPos을 해당 발사체 객체의 Child화) Hierarchy 창에서 ShootPos을 Drag해서 Hierarchy 창의 발사체 객체 이름 위에 Drop하여 Child화
Hierarchy에서 발사체 객체를 클릭 > Inspector 창 > Overrides 클릭하여 ShootPos 추가 확인 > Apply All 클릭
총알 발사 스크립트
Hierarchy 창에서 발사체 객체를 선택 > Inspector창 > Add Component 클릭
ShootCtrl이라고 이름 입력하고 New script 클릭 > Create and Add 클릭하여 ShootCtrl 스크립트 생성
public GameObject bullet;
총알 객체 변수
public Transform shootPos;
총알 위치 정보 변수
if (Input.GetMouseButtonDown(0))
{
Shoot();
}
마우스 클릭 시 총알 발사함수
void Shoot()
{
Instantiate(bullet, shootPos.position, shootPos.rotation);
}
Instantiate()는 GameObject을 새로 생성하는 역할을 하는 함수. Prefab 총알을 필요할때마다 복사해서 생성함.
Project > Prefabs > Bullet을 Drag하여, Inspector > ShootCtrl (Script) > Bullet에(None 위로) Drop
Hierarcy 창에서 발사체의 Child로 포함된 ShootPos을 Drag하여, Inspector > ShootCtrl (Script) > ShootPos에(None 위로) Drop
총알 발사 강도 조정
Prefab > Bullet을 Drag하여 Hierarchy 창에 Drop (Prefab의 Bullet을 다시 Hierarchy창으로 가져와 수정하고 재반영해야 함)
Add Component 클릭 > BulletCtrl이라고 이름 입력하고 New script 클릭 > Create and Add 클릭하여 스크립트 생성
힘을 가하기 위해 힘을 받을 대상으로 Bullet의 RigidBody Component활용
private Rigidbody rb;
...
rb = GetComponent<Rigidbody>();
해당 클래스가 포함된 GameObject(Bullet)의 Rigidbody 컴포넌트 가져와서 rb에 대입
rb.AddRelativeForce(Vector3.forward * 1000.0f);
Vector3.forward(z축) 방향으로 1000.0f의 속도로 힘을 줌
Bullet Prefab의 Inspector 창 Overrides 클릭하고 Bullet Ctrl 스크립트를 Apply All 클릭하여 변경사항 적용. Bullet Prefab 내 정보를 변경했으니 Prefab에 재반영.
Hierarchy 창에 남아있는 Bullet 클릭하여 Delete.
![]()
저작권법 / 무단전재 및 재배포 금지