728x90

목차.

  1. 개요
  2. 소스코드
  3. 코드분석
  4. 결론

 

개요

 

저번 글에서는 점프 1번만 하기를 구현했는데 이번에는 2단 점프 또는 N단 점프를 지정할 수 있도록 구현해 보겠습니다.

한 번만 점프하기는 아래 글을 참고해 주세요!

 

[Unity 3D] 유니티 3D : 점프 1번만 하기 구현 :: 매일개발자 (tistory.com)

 

[Unity 3D]유니티3D : 점프 1번만 하기 구현

대부분의 게임에 들어가는 기능인 JUMP를 넣어보겠습니다. 오브젝트는 큐브나 캡슐 등 어떤 것을 사용해도 괜찮습니다 오브젝트에 Rigidbody 컴포넌트 추가 점프 기능을 추가할 오브젝트를 Hierarchy

wookeee.tistory.com

 

 

소스코드

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{
    Rigidbody pRigidbody;

    float jumpForce = 3.0f;
  
    bool grounded = false;
   
   	
    public int jumpPossible; //점프 수 지정가능
    int jumpCount; //점프 수 카운트

    void Start()
    {
        pRigidbody = GetComponent<Rigidbody>();
        jumpCount = jumpPossible;
    }
    void Update() // 무브먼트 업데이트 
    {
        Jump();
    }
	void Jump()
	{
    	if (Input.GetKeyDown(KeyCode.Space) && jumpCount > 0)
    	{
          // Sqrt 는 빠른 속도로 점프 하고 천천히 낙하하는 부자연스러움을 줄여줍니다.
          Vector3 jumpVelocity = Vector3.up * Mathf.Sqrt(jumpForce * -Physics.gravity.y);
          pRigidbody.AddForce(jumpVelocity, ForceMode.Impulse);
          jumpCount--;
    	}
	}

    private void OnCollisionEnter(Collision collision)
    {
        if (collision.transform.tag != null)
        {
            grounded = true;
            jumpCount = jumpPossible;
        }
    }
    private void OnCollisionExit(Collision collision)
    {
        if (collision.transform.tag != null)
        {
            grounded = false;
        }
    }
}

 

코드분석

 

 jumpPossible - 변수 선언함으로써 점프 가능 횟수를 설정할 수 있게 해 줬습니다.

jumpCount - 플레이어가 점프한 횟수를 카운트해주는 변수입니다.

 

->만약 jumpPossible를 2로 초기화해 준다면 2단 점프를 할 수 있게 됩니다.

 

스페이스바를 눌러 점프하면 jumpCount를 1 감소시킵니다.

조건문을 통해 jumpCount를 확인하고 0보다 클 때만 즉 1 이상일 때만 점프가 가능하도록 했습니다.

 

위 코드를 평지에서는 문제없이 작동하지만,

만약 벽에 붙은 상태로 점프를 한다면 OnCollisionEnter가 호출되어 점프 가능 횟수가 초기화됩니다.

 

이런 경우 바닥으로 RayCast를 쏴서 바닥 체크를 하는 방법도 있지만 
이번 글에서는 가장 쉬운 방법으로 여러 번 점프하는 기능을 구현해 봤습니다.

 

결론

 

설정한 점프 수만큼 점프하는 모습을 볼 수 있습니다.

 

이단점프-구현
이단점프 구현

 

이번 글에서 AddForce를 이용해 플레이어 점프를 구현했고,

점프 횟수를 설정해서 여러 번 점프할 수 있도록 설정해 봤습니다.

 

728x90

+ Recent posts