[개요]
상자를 밟으며 점프하던 캐릭터가 장애물과 충돌하게 되면 튕겨나가게끔 구현해야 한다. 이때 장애물의 오른쪽에 충돌하면 캐릭터도 오른쪽으로 튕겨나가고 왼쪽에 충돌하면 왼쪽으로 튕겨나가도록 설정하는 것이 일반적인 경우이다.
[해결 방법]
1. 장애물에 태그를 설정해야 하는데 나는 `Obstacle`이라는 태그를 만들어서 설정해주었다. 그리고 `Collider2D`를 적용해줘야 하는데 내가 적용할 장애물은 톱니 모양이라 `Circle Collider 2D`를 적용해주었다.
2. 캐릭터에 적용할 `Player.cs` 스크립트에 `OnCollisionEnter2D` 메서드를 구현해준다. `dirX`는 캐릭터의 x축 방향과 충돌한 장애물의 x축 방향을 비교해서 왼쪽에서 충돌하면 왼쪽으로 튕겨나가게 하고, 오른쪽으로 충돌하면 오른쪽으로 튕겨나가도록 설정하는 부분이다. `튕겨나갈 정도`와 `튕겨나갈 힘`은 원하는 값으로 설정해주면 된다.
void OnCollisionEnter2D(Collision2D collision) {
if (collision.gameObject.CompareTag("Obstacle")) {
int dirX = transform.position.x - collision.transform.position.x > 0 ? (튕겨나갈 정도) : -(튕겨나갈 정도);
rb.AddForce(new Vector2(dirX, (튕겨나갈 정도)) * (튕겨나갈 힘), ForceMode2D.Impulse);
}
}
끝!
'[Projects] > [Unity] 인내의 숲(2024.03)' 카테고리의 다른 글
[Unity] 자식 오브젝트의 위치 특정 값으로 설정하는 방법(transform.localPosition) (0) | 2024.06.14 |
---|