카테고리 없음

[Unity/TIL] - Vector3.Lerp / Layer충돌관리 / 맵 끼임 버그 / Composite Collider

song-ssi 2025. 5. 11. 22:32

함수 안에서 선언된 변수는 함수 안에서만 쓸 수 있다.

만약다른 함수에서도 사용하고 싶다면

함수 바깥에서

클래스의 멤버변수로 선언해야한다.

 

 

Vector3.Lerp

Vector3.Lerp는 두 벡터(Vector3) 사이를 부드럽게 이동하는 함수.
캐릭터나 카메라 이동, 스케일 변경 등 부드러운 전환(보간)에 자주 사용.

Vector3.Lerp(Vector3 시작위치, Vector3 목표위치, float 보간값);

 

 

땅에 닿으면 점프횟수 초기화

Player 아래에 빈 오브젝트 GroundCheck를 만든다.

GroundCheck가 Ground 레이어가 붙어있는 오브젝트에 닿으면 점프횟수가 초기화된다.

public Transform groundCheck;
public float groundCheckRadius = 0.2f;
public LayerMask groundLayer;

void HandleJump()
{
    // 땅에 닿으면 점프 횟수 초기화
    if (IsGrounded())
    {
	jumpCount = 0;
    }
}
bool IsGrounded()
{   
	bool isGrounded = Physics2D.OverlapCircle(groundCheck.position, groundCheckRadius, groundLayer);
 	return isGrounded;
}

 

inspector창에서

groundCheck에 GroundCheck 오브젝트 넣고

groundLayer에서 Ground 레이어를 선택해주기!

 

땅이랑 GroundCheck 의 레이어를 모두 Ground로 바꿔줘야 정상 작동한다. 

 

 

충돌시 회전기능 없애기 

 

Player가 땅에 닿으면 자꾸 회전을 함.

 

Rigidbody 2D - Freeze rotation Z를 체크해주니 해결.

 

 

맵 끼임 

 

Player가 Tilemap에 끼이는 현상 발생.

 

Tilemap Cllider 2D에서 Used By Composite을 체크한다.

 

 

Used by Composite란?

  • 타일맵 콜라이더는 타일 하나마다 콜라이더를 생성하기 때문에 타일마다 경계가 생기고, 이 경계에 캐릭터가 끼이는 현상이 자주 발생한다.

📌 **"Used by Composite"**를 체크하면:

  • 여러 개의 콜라이더를 하나의 콜라이더로 합쳐줘서 플레이어가 부드럽게 이동할 수 있고, 충돌 문제를 크게 줄일 수 있다.

🔧 사용 방법

  1. Used by Composite  체크
  2.  그 오브젝트에 Composite Collider 2D 컴포넌트 추가 (rigidbody 자동 추가됨-static으로 설정 가능)
  3. Tilemap Collider 2D는 회색으로 비활성화되고, 대신 Composite Collider 2D가 작동한다.

 

 

Composite Collider 2D를 꼭 추가해야 하나요? 

추가 안해도 작동은 잘 됐지만...

추가를 권장한다고 함.

 

📌 이유.

  1. Used by Composite는 단독으로 작동하지 않음
    • 이 옵션을 켜면 Tilemap Collider가 Composite Collider를 통해서만 콜라이딩하도록 바뀜
    • 그런데 Composite Collider가 없으면 Unity가 내부적으로 충돌을 어떻게 처리할지 예측이 어렵고, 경고 메시지는 없지만 정상 작동 보장은 안 됨.
  2. 끊김/끼임 문제 가능성
    • 현재는 괜찮아 보여도, 플레이어가 빠르게 움직이거나, 타일 경계에 걸칠 경우 충돌 오류가 날 가능성이 있음.
    • 특히 Tilemap Collider는 타일 하나마다 콜라이더가 생겨서, 물리적으로는 틈이 존재하는 셈.
  3. 성능 문제
    • 작은 콜라이더가 수백 개 이상 있으면, 물리 연산 비용이 커져서 성능 저하가 발생할 수 있음.
    • Composite Collider는 그걸 하나로 묶어줘서 훨씬 효율적.

🛠 결론

  • 지금 문제 없더라도: Composite Collider 2D 추가해주는 게 안전하고 성능 면에서도 좋음.
  • 안 넣으면: 게임이 복잡해질수록 예기치 않은 버그가 발생할 가능성이 높아짐.