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

2024. 6. 15. 10:11·[Projects]/[Unity] 인내의 숲(2024.03)

[개요]

  상자를 밟으며 점프하던 캐릭터가 장애물과 충돌하게 되면 튕겨나가게끔 구현해야 한다. 이때 장애물의 오른쪽에 충돌하면 캐릭터도 오른쪽으로 튕겨나가고 왼쪽에 충돌하면 왼쪽으로 튕겨나가도록 설정하는 것이 일반적인 경우이다.


[해결 방법]

  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
'[Projects]/[Unity] 인내의 숲(2024.03)' 카테고리의 다른 글
  • [Unity] 자식 오브젝트의 위치 특정 값으로 설정하는 방법(transform.localPosition)
Semincolon
Semincolon
It seems small, that semicolon is a big deal.
  • Semincolon
    Semincolon
    Semincolon
  • 전체
    오늘
    어제
    • 분류 전체보기 (133)
      • [Programming Language] (78)
        • [JSP] (6)
        • [Swift] (23)
        • [SwiftUI] (16)
        • [Python] (22)
        • [C언어] (6)
        • [Kotlin] (4)
        • [C#] (1)
      • [Frame Work] (5)
        • [Flutter] (4)
        • [Spring Boot] (1)
      • [Projects] (3)
        • [Android][Kotlin] 공유 캘린더(20.. (1)
        • [Unity] 인내의 숲(2024.03) (2)
      • [DB] (15)
        • - Oracle (15)
      • [Programmers] (25)
        • - SQL (25)
      • [ETC] (2)
      • Today's Learning (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Semincolon
[Unity] 장애물과 충돌한 캐릭터 밀려나게(튕겨나가게) 하는 방법
상단으로

티스토리툴바