自定义设置玩家跳跃次数的逻辑就是通过定义一个计数器来检测跳跃次数
当 计数器 == 0 时说明玩家在地面(跳跃次数为0);
当 计数器 == 1 时说明玩家跳跃了一次并且在空中;
当 计数器 == 2 时说明玩家跳跃了两次并且在空中;
......
设置玩家单次跳跃
1) 判断玩家跳跃次数如果为0(计数器是否 == 0)则进行跳跃动作
2) 增加计数器(使玩家无法进行二次跳跃)
3) 使用OnCollisionEnter方法重置计数器
设置玩家多次跳跃
1) 判断玩家的现有跳跃次数是否小于x(计数器 < x)从而进行跳跃动作
2) 增加计数器(使玩家达到跳跃次数后无法进行x+1次跳跃)
3) 使用OnCollisionEnter方法重置计数器
代码实现如下:
设置玩家跳跃次数为1
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
private Rigidbody playerRB; // 创建一个刚体的容器
public float jumpForce = 5; // 初始化跳跃力量
public int jumpCount = 0; // 设置计数,0代表在地面上;非0代表跳跃中
void Start()
{
playerRB = GetComponent<Rigidbody>(); // 在游戏开始时获取玩家的刚体组件的内容
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space) && jumpCount == 0) // 判断玩家如果按下空格并且跳跃次数为0则执行跳跃
{
playerRB.AddForce(Vector3.up * jumpForce,ForceMode.Impulse); // 使用ADDForce方法,为玩家的刚体添加向上的力和瞬时力
jumpCount++;
}
}
private void OnCollisionEnter(Collision collision) // 当玩家的碰撞体接触到地面的碰撞体时调用
{
jumpCount = 0; // 当玩家落地时,Reset jumpCount
}
}
设置玩家跳跃次数为2 — (修改jumpCount的判断值即可)
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
private Rigidbody playerRB; // 创建一个刚体的容器
public float jumpForce = 5; // 初始化跳跃力量
public int jumpCount = 0; // 设置计数,0代表在地面上;非0代表跳跃中
void Start()
{
playerRB = GetComponent<Rigidbody>(); // 在游戏开始时获取玩家的刚体组件的内容
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space) && jumpCount < 2 ) // 判断玩家按下空格且跳跃次数没有超过两次则可以跳跃
playerRB.AddForce(Vector3.up * jumpForce,ForceMode.Impulse); // 使用ADDForce方法,为玩家的刚体添加向上的力和瞬时力
jumpCount++;
}
}
private void OnCollisionEnter(Collision collision) // 当玩家的碰撞体接触到地面的碰撞体时调用
{
jumpCount = 0; // 当玩家落地时,Reset jumpCount
}
}