-
물리엔진유니티/유니티 메인 2024. 1. 31. 02:13
고양이를 올려준뒤
Inspector 창에서 컴포넌트로 Rigidbody 2D를 추가하면 고양이에게 중력이 작용한것을 확인할수 있다
여기서 Circle Collider 2D를 추가하면 고양이 몸 주위에 원이 생성된다. 이는 충돌판정용으로 쓰인다
여기에 Box Collider까지 추가해 좀더 디테일한 충돌판정을 받아낼수 있다
구름을 추가한뒤 구름에도 Box Collider를 입힌다
실행을 하면 고양이의 하체부분이 둥글다보니 조금씩 미끄러지는것을 확인할수 있다
이것을 해결하는 방법은 두가지로, 첫번째는 정확히 가운데로 원과 사각형의 비율을 맞춰 미끄러지지 않게 하거나
아니면 Rigidbody의 Constraints에서 z축이 회전하지 않도록 고정시키는것이다
어디가 회전하는축인지 알고 싶다면 Scene창에서 2D를 헤제한뒤 회전모드로 보면 쉽게 알 수 있다
구름이 중력의 영향을 받지 않아 함께 떨어지는것을 방지하는 방법은 2가지가 있다.
첫번째는 위와 같이 애초에 Rigirbody를 적용하지 않는것이고
아니면 적용한뒤 Body Type을 Kinematic으로 변경하는것이다
처음부터 중력적용을 안했으면 안했지 굳이 해놓고 왜 Kinematic으로 바꾸는지는 모르겠지만 어쨋든 이런 방법도 있다
실행을 해보면 뭔가 부자연스럽게 구름위에 착지한것 같아 불편한데
구름의 레이어 오더를 변경하여 고양이가 자연스럽게 구름에 파묻혀 보이도록 해준다
오브젝트를 이동시킬수 있는 방법 중 지금까지 배운건 오브젝트 좌표를 변경하여 이동시키는것 뿐이었지만
물리엔진을 이용한다면 직접 힘을 가해 이동시킬수도 있다
public class NewBehaviourScript : MonoBehaviour { Rigidbody2D rigid2D; float jumpforce = 680.0f; void Start() { this.rigid2D = GetComponent<Rigidbody2D>(); } void Update() { // 점프한다 if (Input.GetKeyDown(KeyCode.Space)) { this.rigid2D.AddForce(transform.up * this.jumpforce); } } }
Playercontrol 스크립트를 만든뒤 코드를 짜주고 고양이에게 적용시킨다
스페이스바를 누르면 680의 힘만큼 점프하는것을 볼수있다
'유니티 > 유니티 메인' 카테고리의 다른 글
Vector2 클래스, transform, GetMouseButtonDown (0) 2024.02.03 총정리 (용어정리) (0) 2024.02.03 물리엔진, 애니메이션, 씬 변환 (1) 2024.02.01 프리팹, 충돌판정 복습 & 물리엔진 (1) 2024.01.31 충돌판정, 프리팹 (1) 2024.01.29