Object 만들고, 색입히고, RigidBody 넣는 것 까지는 동일하다.
Collider 설정
- 물리적 표면이 존재하는 Object는(ex. 3D Sphere), Collider를 가진 다른 Game Object와 충돌하면 튕겨나갈 수 있다.
- 탄알은 탄알과 충돌시 튕겨나가지 않고 그냥 통과하게 해야한다. 이를 위해 Trigger로 설정된 Collider가 필요하다.
- Player가 특정 영역으로 진입했는지 검사할 때 Trigger Collider를 많이 사용한다.
- Trigger Collider 자체는 물리적인 표면이 없다.
- 여기선 Bullet이 충돌을 감지하되, Game Object를 튕겨나가게 하지 않게하기 위해 Trigger Collider를 사용한다.
Prefab: 언제든지 재사용할 수 있는 미리 만들어진 Game Object Asset
-> Bullet Game Object를 탄막생성기가 언제든지 재사용할 수 있게 하기위해 필요하다.
file로 저장되기 때문에, 다른 Scene에서 재사용할 수 있다.
transform Component
- C# 상에서, transform.XXX 로 접근할수있다.
- 모든 3D객체는 위치/크기/회전을 가지기 때문에, 반드시 보유한다.
- 따라서, 편의상 따로 GetComponent<Transform>() 해서 직접 찾아올 필요가 없게 특수하게 처리되어있다.
- forward 변수는 앞쪽 방향을 Vector3로 알 수 있다.
충돌메시지에 대응하려면, 충돌메시지와 같은 이름으로 메서드를 작성하면 된다.
충돌에는 2 종류가 있다.
1. OnCollision 계열
일반충돌이다.
충돌한 두 Collider는 서로 밀어낸다.
- OnCollisionEnter(Collision collision)
- OnCollisionStay(Collision collision)
- OnCollisionExit (Collision collision)
Collision은 충돌한 상대 Game Object의 충돌지점, 충돌표면방향 등을 알수있는 정보 Container이다.
2. OnTrigger계열
트리거 충돌이다. 충돌한 Object 둘 중 하나라도 isTrigger가 체크되어있다면 이게 실행된다.
충돌한 두 Collider는 서로 그대로 통과한다.
- OnTriggerEnter (Collider other)
- OnTriggerStay ( Collider other)
- OnTriggerExit ( Collider other )
Trigger충돌에서는 상세한 충돌정보가 필요없기 때문에, Collider 타입을 쓴다.
상대방 게임 오브젝트의 정보를 곧장 받는다. 그 외 정확한 충돌지점, 충격량, 반발력 등은 필요없으니 없다.
Bullet Game Object의 Collider Component는 IsTrigger가 체크된 Trigger Collider이다.
따라서, OnTriggerEnter()를 작성한다.
사양은 아래와 같다.
1. 충돌한 상대 Game Object가 Player라면 PlayerController Component의 Die() 메서드 실행.
2. 그 외 Game Object라면 무시하고 통과
Apply All 을 클릭해서 모든 Prefab에 Script를 적용
- Apply All: 해당 게임오브젝트의 변경사항이 Prefab이 반영됨.
- Revert All: 게임오브젝트의 변경사항이 취소되고 연동된 Prefab 상태로 롤백됨.
그 후, Hierarchy에서 Bullet은 삭제한다.(BulletSpawner에서 Prefab의 Bullet을 자동생성할것이기때문)
'Development > Unity Engine' 카테고리의 다른 글
[Retro유니티] BulletSpawner - Update() 함수로 실행반복 (0) | 2024.11.17 |
---|---|
[Retro유니티] Bullet Spawner 구현 - Start() (0) | 2024.11.15 |
[Retro유니티] Player Object 설계 2 - GetComponent/linearVelocity/GetAxis 사용 (0) | 2024.11.10 |
[Retro유니티] Player Object 설계 1 - AddForce를 통한 움직임 구현 (1) | 2024.11.10 |
Unity 프로젝트용 .gitignore (0) | 2024.11.10 |