https://kmong.com/self-marketing/556080/xcCLzhi3mY
당신이 손해볼 구글링 시간을 없애다 - 유니티 비법서 - 크몽
UniCoti 전문가의 전자책 서비스를 만나보세요. <p>이 책은 유니티를 하면서 생기는 여러 오류에 대한 해결책과</p>...
kmong.com
(174가지 주제의 유니티 기능 정리, 오류 해결법 + 무제한 질문권 전자책. 15000원)
오늘은 Oncollision 계열 함수들에 대하여 알아보겠다.
초보자들이 레이를 이용해 바닥감지를 많이 하는데,
어려워하는 걸 보며 이걸 쓰면 좋을 텐데라는
생각을 많이 하여 글을 쓴다.
시작.
먼저, 이 계열은 종류가 많다.
그렇기 때문에 먼저 나열하고, 설명을 시작하겠다.
Oncollision... | 2D | 3D |
Enter (닿았을때 한번 실행) | OnCollisionEnter2D | OnCollisionEnter |
Stay (닿아있는 중일때 계속 실행) | OnCollisionStay2D | OnCollisionStay |
Exit (떼어질때 한번 실행) | OnCollisionExit2D | OnCollisionExit |
이 정도로 정리할 수 있겠다.
설명을 보면 알겠지만, 이걸 모두 설명할 필요는 없고,
Enter 계열, Stay 계열, Exit 계열이 모두 다르기에
3개로 나눠서 설명하겠다.
1. OnCollisionEnter2D, OnCollisionEnter (Enter)
Enter 쪽 함수들은 닿았을 때 한번 실행된다.
예를 들면 점프하고 바닥에 내려왔다면,
바닥에 닿는 순간 한번 실행된다.
이걸 이용해서 뭔가 투사체를 던졌을 때 맞는 순간
상대에게 대미지를 주거나 할 수 있다.
이걸 활용해서 지금 바닥인지 공중인지 구분하여
애니메이션을 줄 수도 있다.
private void OnCollisionEnter2D(Collision2D other) { //2d
Destory(other.gameobject); //닿는 물체를 없앰.
}
private void OnCollisionEnter(Collision other) { //3d
}
other이 닿은 물체 라는걸 알 수 있다.
2. OnCollisionStay2D, OnCollisionStay (Stay)
Stay 쪽 함수들은, 닿고 있는 중에 Update()처럼 계속 실행된다.
이걸 어디에 활용할 수 있을까?
실제로 이와 비슷한 기능을 이용해 제작한 지는 모르겠지만
파피플레이타임의 전기 연결 또한 손이 계속 저기에 닿고 있어야만
전기(로직)가 흐른다. 이런 기능을 만들 때 활용할 수 있겠다.
private void OnCollisionStay2D(Collision2D other) { //2d
}
private void OnCollisionStay(Collision other) { //3d
}
3. OnCollisionExit2D, OnCollisionExit (Stay)
이번엔 Exit계열이다. Exit계열은, 물체에서 떨어질 때 한번 실행된다.
이번 꺼는 게임 속에서 직접적인 시각적 예시를 찾기 어려운데,
게임 개발 중을 예시로 들면 점프를 했을 때, 바닥이랑 떨어지기 때문에
그때 Exit가 발동되어 점프 중으로 인식해줄 수 있다.
private void OnCollisionExit2D(Collision2D other) { //2d
}
private void OnCollisionExit(Collision other) { //3d
}
게임을 예시로 들어 OnCollision을 설명해 보았는데,
사실 점프를 위한 거였다가 살짝 틀어졌다.
어쨌든 도움이 되었길 바라며,
끝.
'게임 개발 > 유니티C#' 카테고리의 다른 글
unity c#) try-catch 문. (2) | 2023.12.17 |
---|---|
유니티 C#) 휴대폰에서 작은 메시지, 경고 만들기(토스트 메시지) (0) | 2023.03.04 |
유니티 화면 끝 좌표(상하좌우) 가져오기. (0) | 2023.02.10 |
유니티) 애니메이션 만들기 (2편) (0) | 2023.01.26 |
유니티 C#) 선택된 UI 가져오는 법. (EventSystem.current.currentSelectedGameObject) (0) | 2023.01.25 |
댓글