유니티

유니티 04. 플랫폼 게임에서의 플레이어 이동, 점프 구현

채채_._. 2024. 5. 1. 09:49

유니티 패키지 파일

- 원하는 파일들을 하나로 묶어 다른 프로젝트로 전달할 때 사용.

 

 

Rigidbody2D 컴포넌트의 Constraints

- Freeze Position : 물리에 의한 이동 중지

- Freeze Rotation : 물리에 의한 회전 중지

 

- Collider 2D를 적용하면 충돌 처리 적용됨.

 

플레이어의 이동

- 이동 속도를 나타내주는 c# 코드

- 플레이어를 제어하는 c# 코드

- 좌우 방향키로 제어 가능

 

플레이어의 점프

- move 함수 처럼 외부에서 가져옴.

- 스페이스 키를 누를 때마다 점프.

 

낮은 점프

- y축 속력 값을 양수인 위로 올라가는 상태일 때 점프 키를 누르고 있으면  gravity 설정은 1 아닌 경우 2.5로 설정.

 

rigid2D.gravityScale

- 중력 계수

- 플레이어에게 가해지는 중력 : (0, -9.81, 0) * gravityScale

- gravityScale = 1 / transform.position += (0, -9.81, 0)의 연산이 추가

- gravityScale = 2.5 / transform.position += (0, -24.525, 0)의 연산이 추가

 

바닥 판정 및 점프 제어

- 플레이어의 발의 위치를 알아야 함.

 

발의 위치

00Collider2D.bounds

- 충돌 범위의 min,center, max 위치 값

- 2D > Vector2(x,y)

- 3D > Vector3(x,y,z)

 

Collider2D collider = Physics2D.OverlapCircle(Vector2 position, float radius, LayerMask layer);

- position 위치에 radius 반지름 크기의 보이지 않는 원 충돌 범위 생성

 

- 점프에 조건문을 붙여 true 일 때만 점프할 수 있도록 설정.

 

Gizmos

- 눈에 보이지 않는 선이나 박스 등의 오브젝트를 그릴 수 있는 함수

- Gizmos.color = Color.blue; > 파란색

- Gizmos.DrawSphere(footPosition, 0.1f); > 발의 위치에 0.1 반지름 구 생성

 

- ground라는 layer 설정한 후 땅이라고 생각되는 오브젝트에 모두 그라운드 설정.

- player movement에 ground layer에 ground 설정.

 

- 결과 : 땅에 닿아있을 때 한번만 점프

 

최대 점프 횟수 설정

- 점프할 때 마다 점프 가능 횟수 줄어들음

  • maxJumpCount : 최대
  • currentJumpCount : 현재 점프 횟수

 

오브젝트 마찰력 설정

- 마찰력에 의해 player가 벽에 붙는 경우가 생김

- ground라는 것을 만든 후 마찰력 설정.

 

Physics material 2D

Friction : 마찰력 (0에 가까울 수록 미끄러움)

Bounciness : 표면과 충돌했을 때 튕기는 정도 (1에 가까울 수록 통통 튀기게 됨)