▣ 안녕하세요.
이번장에서는 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으로 바꿔서 다시 점프를 할 수 있는 조건문으로 만들어주는 코드입니다.
'[ Unity ] > - 유니티 실습' 카테고리의 다른 글
유니티 [부모,자식오브젝트 분리] (0) | 2023.01.26 |
---|---|
유니티 - [Header] (0) | 2022.08.25 |
유니티 - [이동, 방향, 키입력] (0) | 2022.08.22 |
유니티 - [오브젝트 이동 여러 예시] (0) | 2022.08.19 |
유니티 - [함수호출 순서] (0) | 2022.08.18 |
댓글