TIL
📝 물리 충돌 이벤트
📝 OnCollision--
📝 트리거 이벤트
📝 OnTrigger--
👩💻 물리 충돌 이벤트
Ball이 다른 Ball과 충돌했을 때 Meterial Color가 변하는 물리 충돌 이벤트를 구현해보겠습니다
줄무늬 공 : Ball_1
나머지 공 : Ball_2 ~ Ball_5
색이 변하는 나머지 검은 색 공에게 적용할 스크립트를 새로 생성합니다
📌 오브젝트의 재질 바꾸기
오브젝트의 재질 접근은 MeshRenderer를 통해서 합니다
즉, MeshRenderer - Materials - otherBall에 접근해서 Albeo 색을 바꾸는 로직이 필요합니다
마찬가지로 선언 -> 초기화 -> 호출 과정이 필요합니다
📍 선언
MeshRenderer mesh;
Material mat;
MeshRenderer / Material 선언
📍초기화
void Start()
{
mesh = GetComponent<MeshRenderer>();
mat = mesh.material;
}
GetComponent<T> : 자신의 T타입 컴포넌트를 가져오는 메서드
MeshRenderer 컴포넌트를 가져왔습니다
Material mat은 MeshRenderer에서 material 임을 초기화합니다
👩💻 실제 물리적인 충돌로 발생하는 이벤트
📌 OnCollisionEnter
물리적 충돌이 시작할 때 호출되는 함수
void OnCollisionEnter(Collision collision)
{
}
Collision : 충돌 정보 클래스
📌 OnCollisionStay
물리적 충돌이 일어나고 있을 때 호출되는 함수
void OnCollisionStay(Collision collision)
{
}
📌 OnCollisionExit
물리적 충돌이 끝났을 때 호출되는 함수
void OnCollisionExit(Collision collision)
{
}
🔻 4개의 검은 공이 특정 이름의 오브젝트와 충돌하면, 흰 공으로 바뀌는 로직
void OnCollisionEnter(Collision collision)
{
if (collison.gameObject.name == "Ball_1")
mat.color = new Color(1, 1, 1);
}
collision.gameObject.name : 충돌이 감지된 GameObject 이름를 감지합니다 (읽기 전용)
Color : 기본 색상 클래스
Ball_1 (줄무늬공) 과 닿았을 때 if문 로직을 실행합니다
material의 color에 접근하여 새로운 컬러를 부여합니다. (1, 1, 1)은 흰 색입니다.
🔻 충돌이 끝났을 때, 다시 검은 색으로 바뀌는 로직
충돌이 끝난 경우 OnCollisionExit를 사용합니다
void OnCollisionExit(Collision collsion)
{
if (collision.gameObject.name == "Ball_1")
mat.color = new Color(0, 0, 0);
}
color 와 실행함수만 바꾸었습니다
👩💻 트리거 이벤트
📌 OnCollisionEnter
Collider 충돌로 발생하는 이벤트
void OnTirggerEnter(Collider other)
{
}
Collider은 모든 충돌체의 기본 클래스입니다.
📌 OnCollisionEnter
Collider 충돌이 끝나고 발생하는 이벤트
void OnTirggerStay(Collider other)
{
}
📌 OnCollisionEnter
Collider 충돌로 발생하는 이벤트
void OnTirggerStay(Collider other)
{
}
🔻 특정 영역 안에 들어갈 때 점프하는 것을 구현해보겠습니다
Cube를 새로 생성하고 Box Collider의 Is Trigger를 활성화시킵니다
Is Trigger를 활성화시키면 cube가 표시되지만 cube가 차지하고 있는 영역을 자유롭게 드나들 수 있습니다
🔻 줄무늬공이 Cube Collider와 충돌하는 동안 이벤트가 발생하는 로직
void OnTriggerStay(Collider other)
{
if (other.name == "Cube") //Cube이름을 가진 콜라이더와 충돌하고 있을 때 로직 실행
//로직
}
줄무늬 공 스크립트에 해당 로직을 적어줍니다
🔻 줄무늬 공이 Cube 영역에서 바람이 불어 위로 올라가는 듯한 이벤트를 겪는 로직을 적어주겠습니다
rigid.AddForce(Vector3 * 2, ForceMode.Impuse);
전체 로직은 이러합니다
.
.
.
'유니티' 카테고리의 다른 글
유니티 Roll-a-ball 간단한 게임 만들기 (0) | 2022.04.17 |
---|---|
유니티 게임 인터페이스 UI 기초 / Canvas / Text / Image / Button (0) | 2022.04.13 |
유니티 물체 이동하기 AddForce / ForceMode / AddTorque (0) | 2022.04.11 |
유니티 오브젝트 중력과 충돌 / Material / Collider / RigidBody 기초 (0) | 2022.04.11 |
유니티 목표지점으로 이동하기 - (Vector3) MoveTowards / SmoothDamp / Lerp / Slerp (0) | 2022.04.09 |