본문 바로가기

유니티 3D기본(Roll A Ball)

14. 점프 및 연속 점프 방지

저번 소스 코드와 이어집니다.

bool 타입의 isJumping이라는 변수를 사용해 연속 점프를 방지했습니다.

 

 

소스코드

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

public class PlayerBall : MonoBehaviour
{
    Rigidbody rigid; 
    public float jumpPower; //점프 높이 변수 선언
    bool isJumping; // 점프 유무 변수 선언

    void Awake()
    {
        rigid = GetComponent<Rigidbody>();         
        jumpPower = 10; //초기화
        isJumping = false; //초기화
    }

    void FixedUpdate()
    {
        float x = Input.GetAxisRaw("Horizontal");
        float z = Input.GetAxisRaw("Vertical");
        Vector3 move = new Vector3(x, 0, z);

        rigid.AddForce(move, ForceMode.Impulse);

    }

    void Update()
    {
        if (Input.GetButtonDown("Jump") && !isJumping) { //조건 추가
            isJumping = true; //점프하면 isJumping을 true로
            rigid.AddForce(new Vector3(0, jumpPower, 0), ForceMode.Impulse);
        }
    }

    void OnCollisionEnter(Collision collision) //충돌 감지
    {
        if (collision.gameObject.tag == "Floor") { //tag가 Floor인 오브젝트와 충돌했을 때
            isJumping = false; //isJumping을 다시 false로
        }
    }

}

 

결과