/ UNITY

게임 총알

게임 총알 (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.

hweejoon-chung.github.io

저작권법 / 무단전재 및 재배포 금지

-->