일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- menu
- 도트
- 채색
- 도트공부
- layer
- 장학팀
- TOOL
- 드로잉
- 드로잉 연습
- 애니메이션
- Aseprite
- 모작
- 픽셀 아트
- 반환원정대
- 노하우
- 개발
- COSMO
- Pixelart
- 연습
- 픽셀아트
- 스마일게이트
- pixel art
- photoshop
- 포토샵
- 인디게임 개발
- 에이세프라이트
- 서포터즈
- 기초
- 멋쟁이사자처럼
- 자원순환보증금관리센터
- Today
- Total
소소한 나의 하루들
물리 충돌 이벤트 본문
출처: https://youtube.com/playlist?list=PLO-mt5Iu5TeYI4dbYwWP8JqZMC9iuUIW2&feature=shared
#1. 물리 충돌 이벤트
스크립트에서 오브젝트의 Mesh Renderer 컴포넌트의 Materials 옵션을 가져온다.
MeshRenderer : 오브젝트의 재질 접근은 이 클래스를 통해서 갖고온다.
public class OtherBoll : MonoBehaviour
{
MeshRenderer mesh;
Material mat;
Rigidbody rigid;
// Start is called before the first frame update
void Start()
{
mesh = GetComponent<MeshRenderer>();
mat = mesh.material;
rigid = GetComponent<Rigidbody>();
}
private void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.name == "My Boll")
mat.color = new Color(1, 1, 1);
}
private void OnTriggerStay(Collider other)
{
if (other.name == "Cube")
rigid.AddForce(Vector3.up * 20, ForceMode.Impulse);
}
}
MeshRenderer 클래스에서 material 메소드를 갖고온다. 여기서 color(색상) 클래스에 접근할 수 있다.
Color: 기본 색상 클래스, Color32: 255 색상 클래스
이벤트성 함수는 앞에 'On'을 붙인다.
OnCollisionEnter() : 물리적 충돌이 시작될 때 호출되는 이벤트 함수
OnCollisionStay() : 물리적 충돌이 진행될 때 호출되는 이벤트 함수
OnCollisionExit() : 물리적 충돌이 끝났을 때 호출되는 이벤트 함수
→매개변수로 Collision 타입의 변수를 사용한다.
※'바닥 오브젝트'와 닿아있다면, 그것도 충돌 판정이 되는 것이다.
우리가 원하는 것은 바닥 오브젝트와 닿아있는 것이 충돌 판정이 되는 것이 아니다. 따라서 원하는 오브젝트와 충돌했을 때의 판정을 충돌이라고 인식하기 위해서
충돌했을 때 상대방의 정보를 읽어올 수 있어야함.
그것은 OnCollision() 함수의 매개변수의 타입인 Collision 클래스가 갖고있다.
Collision : 충돌 정보를 갖고있는 클래스
#2. 트리거 이벤트
오브젝트 투명도 변경: Material 컴포넌트에서 Rendering Mode 옵션을 Transparent로 바꾸고, Albedo에서 투명도 조절
Collider 컴포넌트에서 Is Trigger 체크
그리고 물리적 충돌이 아니기 때문에 RigidBody 컴포넌트를 비활성화하거나 삭제한다.
단순하게 Collider가 겹쳤는지 여부만 확인한다. (물리적 충돌x 따라서 충돌 정보가 없어서 Collider를 매개변수로 받아옴)
두 개의 오브젝트가 Collider 컴포넌트를 가지고 있어야 하고, 둘 중 하나는 is Trigger가 비활성화되어있어야하며 적어도 하나의 오브젝트가 RigidBody 컴포넌트를 가지고 있어야한다.
OnTriggerEnter() : Collider가 충돌시작할 때 호출되는 이벤트 함수
OnTriggerStay() : Collider가 충돌하고 있을 때 호출되는 이벤트 함수
OnTriggerExit() : Collider가 충돌 끝났을 때 호출되는 이벤트 함수
→매개변수로 Collider 타입의 변수를 사용한다.
'개발 > 유니티' 카테고리의 다른 글
깃허브로 유니티 프로젝트 관리하기 (0) | 2024.01.21 |
---|---|
게임 인터페이스_UGUI 기초 (0) | 2024.01.20 |
힘을 이용하여 물체 움직여보기_Rigidbody (0) | 2024.01.18 |
실제와 같은 물체 만들기 (0) | 2024.01.18 |
이동거리를 공평하게, 델타타임 (0) | 2024.01.18 |