유니티에서 플레이어 캐릭터를 만들 때 반드시 체크해야 할 물리 설정과 개발 편의를 위한 디버깅 팁,
그리고 코드 가독성을 높이는 관례를 정리했습니다.
2D 탑다운 또는 플랫포머 게임에서 플레이어 이동을 구현할 때,
물리 엔진에 의한 의도치 않은 회전을 막는 것이 중요합니다.

DynamicGravity Scale을 0으로 두어 공중으로 떨어지지 않게 조절합니다.)ContinuousDiscrete는 프레임 단위로 끊어서 감지하기 때문에, 캐릭터가 너무 빨리 움직이면 벽을 뚫고 지나가는 '터널링 현상'이 발생할 수 있습니다. 플레이어는 벽을 뚫으면 안 되기 때문에 Continuous로 설정하여 이를 방지합니다.Interpolate (보간)FixedUpdate)과 화면 렌더링(Update) 주기가 일치하지 않아 발생하는 '미세한 떨림(Jittering)' 현상을 잡아줍니다. 카메라가 플레이어를 따라다닐 때 캐릭터가 덜덜 떨려 보인다면 이 설정을 반드시 켜야 합니다.Rigidbody2D 컴포넌트의 Constraints 항목에서 Freeze Rotation Z를 체크해야 합니다. 상호작용 범위나 공격 사거리를 씬(Scene) 창에서 시각적으로 확인할 때 사용합니다.
private void OnDrawGizmos()
{
Gizmos.color = Color.yellow;
Gizmos.DrawWireSphere(transform.position, 1.5f);
}
private void OnDrawGizmosSelected()
{
Gizmos.color = Color.red;
Gizmos.DrawWireSphere(transform.position, 1.5f);
}
유니티에서 오브젝트의 이름을 가져올 때 두 방식 모두 결과는 동일하지만,
실무에서는 gameObject.name을 더 선호합니다.
| 비교 항목 | name | gameObject.name |
|---|---|---|
| 정체 | this.name (단축키) | this.gameObject.name (명시적 접근) |
| 가독성 | 변수명과 혼동될 여지 있음 | 게임 오브젝트의 이름임이 명확함 |
| 성능 | 차이 없음 | 차이 없음 |
gameObject.name을 더 많이 쓰나요?name이라고만 적으면 클래스 내부에 선언된 임의의 문자열 변수인지,