[Projects]/[Unity] 인내의 숲(2024.03) 2

[Unity] 장애물과 충돌한 캐릭터 밀려나게(튕겨나가게) 하는 방법

[개요]  상자를 밟으며 점프하던 캐릭터가 장애물과 충돌하게 되면 튕겨나가게끔 구현해야 한다. 이때 장애물의 오른쪽에 충돌하면 캐릭터도 오른쪽으로 튕겨나가고 왼쪽에 충돌하면 왼쪽으로 튕겨나가도록 설정하는 것이 일반적인 경우이다.[해결 방법]  1. 장애물에 태그를 설정해야 하는데 나는 `Obstacle`이라는 태그를 만들어서 설정해주었다. 그리고 `Collider2D`를 적용해줘야 하는데 내가 적용할 장애물은 톱니 모양이라 `Circle Collider 2D`를 적용해주었다.   2. 캐릭터에 적용할 `Player.cs` 스크립트에 `OnCollisionEnter2D` 메서드를 구현해준다. `dirX`는 캐릭터의 x축 방향과 충돌한 장애물의 x축 방향을 비교해서 왼쪽에서 충돌하면 왼쪽으로 튕겨나가게 하고..

[Unity] 자식 오브젝트의 위치 특정 값으로 설정하는 방법(transform.localPosition)

[문제]  캐릭터가 밟고 올라갈 상자의 뒤에서 일정한 시간을 기준으로 올라왔다 내려가는 톱니바퀴 장애물을 만들고 있다. 장애물은 상자의 자식 오브젝트로 설정하였는데 스크립트에서 설정한 위치 값이 자식 오브젝트가 아닌 부모 오브젝트인 상자의 위치 값을 기준으로 설정되는 문제가 있었다.[해결 방법]  `transform.position`을 사용하는 경우 부모 오브젝트의 위치 값이 기준이 되므로 `transform.localPosition`을 사용해야 자식 오브젝트의 위치 값을 기준으로 동작하게 할 수 있다. transform.position = new Vector3(...); transform.localPosition = new Vector3(...);해결 완료!