본문 바로가기
[ CODING STUDY ]/》유니티 실습

유니티 - [점프 예시1]

by MRG 2022. 8. 25.
728x90
반응형

▣ 안녕하세요. 

이번장에서는 2D오브젝트를 점프하는 코드 중 한 가지를 공부해보겠습니다.

점프를 하는 방법은 여러 가지 방법이 있습니다.

상황에 따라 다양한 코드로 할 수 있습니다. 

점프 코드를 할 때 핵심은 내가 어느 좌표로 할 것인가?를 생각해봐야 합니다.

저희는 2D에서  Y값을 바꿔 점프를 구현하겠습니다.

 

 

▣ 먼저 2D프로젝트를 생성해주시고, 2D Object에서 Sprites 두 개를 만들 만들어주세요.

Player(원), Ground(사각형)

 

▣ 원과 사각형에 이름을 각각 Player와 Ground로 이름을 지정해주시고, 

Player오브젝트에 스크립트와 Rigidbody2D 그리고

 

▣ Capsule Collider2D 컴포넌트를 추가해주세요. 

 

▣ Ground에는 BoxCollider2D 컴포넌트를 추가해주세요.

그런 다음에 플레이 버튼을 눌러 Player와 Ground가 중력과 충돌이 작용하는 걸 확인해주세요.

 

▣ 이제 Player에 있는 스크립트를 열어서 코드를 작성하겠습니다.

변수 두 개를 살펴보면 jumpPower는 점프에 높이 값을 의미하며,

is_jumpCount는 점프를 연속하지 못하게 하기 위한 횟수를 나타내는 변수입니다.

Rigidbody2D는 게임 오브젝트에 물리효과를 넣어서 점프를 하기 위한 컴포넌트 값입니다.

Start()함수를 통해서 rigidbody 변수에 Rigidbody2D 컴포넌트 기능을 넣었습니다.

 

▣ Update() 함수에 조건문을 만들어보겠습니다.

스페이스 키를 누르고 변수에 조건이 맞으면  rigidbody.AddForce() 함수를 호출합니다. 

Vector2.up는  x, y, z 값에 (0,1,0)를 의미합니다.

* jumPower은  y값에 값을 곱해서 y값을 바꿔서 점프를 하기 위함입니다. 

AddForce() 함수는 물리효과로 힘을 주는 함수인데 그 힘을 y값에 넣어서 점프를 하게 합니다.

그리고 is_jumpCount는 점프를 한 상태를 의미합니다. 

1이 되는 코드를 넣어 점프를 하는 중에는 다시 스페이스를 눌러 점프를 할 수 없습니다.

그건 조건문에 &&(And) 연산자에서 is_jumpCount == 0이면 점프를 할 수 있게 코드를 작성했기 때문입니다.

 

 

▣ 이제 땅에 닿으면 다시 점프를 할 수 있는 코드입니다.

void OnCollisionEnter2D() 함수를 만들어서 Ground에 닿으면 다시 is_jumpCount = 0으로 함으로 

다시 점프가 가능한 상태를 만드는 코드 만들었습니다.

OnCollisionEnter2D는 충돌하는 순간 한번 함수가 호출됩니다. 

다시 말해 Ground라는 이름에 게임 오브젝트에 닿이면 is_jumpCount = 0으로 바꿔서 다시 점프를 할 수 있는 조건문으로 만들어주는 코드입니다.

 

 

728x90
반응형

댓글