Unity_常用的四种跳跃检测

在Unity中,假如我们按下一次空格键就可以实现一次跳跃,在没有任何条件的约束下,当我们的游戏物体跳在空中时,我们再按下空格键,又可以继续跳跃,假如我们只想按一次空格键只进行一次完整的跳跃,就需要对这个跳跃执行条件进行约束

在Unity中,常用的跳跃检测方式有以下几种:

  1. 碰撞检测:使用Unity中的碰撞器(Collider)和刚体(Rigidbody)组件来实现。在玩家角色跳跃时,检测角色与地面是否相撞,如果相撞则允许跳跃,否则禁止跳跃。

  2. 射线检测:使用Unity中的射线(Ray)来进行检测。在玩家角色跳跃时,向下发射一条射线,检测射线与地面是否相交,如果相交则允许跳跃,否则禁止跳跃。

  3. 触发器检测:使用Unity中的触发器(Trigger)来进行检测。在玩家角色跳跃时,检测角色与地面是否进入了一个触发器区域,如果进入了则允许跳跃,否则禁止跳跃。

  4. 物理检测,我常用的是物理检测 因为可以设置层级,当有很多类型的地面时,将这些地面放在同一个层级里就可以,比较方便,在这里我实现一下物理检测的方式

以下是代码实现:

======只要当我们的Check函数的返回值为True时 就执行跳跃的方法 在实际项目中可以单独写一个跳跃检测的脚本 然后在人物控制的脚本中调用它就行了

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 物理检测检测脚本
/// </summary>
public class PhyCheck : MonoBehaviour
{
    //检测范围 球形半径
    public float checkRadius = 0.1f;
    //检测层级 
    private LayerMask groundMask;
    //地面
    private GameObject ground;
    //是否在地面
    private bool isGround;

    void Start()
    {
        ground = GameObject.Find("Ground");
        groundMask = ground.GetComponent<LayerMask>();
    }
    
    void Update()
    {
        Check();
    }
    /// <summary>
    /// 跳跃检测方法
    /// </summary>
    /// <returns></returns>
    public bool Check()
    {
        //物理检测 三个参数 检测位置 检测范围 检测层级
        isGround =  Physics.CheckSphere(ground.transform.position, checkRadius,ground.layer);
        return isGround;
    }
   
}

猜你喜欢

转载自blog.csdn.net/m0_69778537/article/details/130297308