unity检测物体是否在斜坡上的方法

介绍

unity检测物体是否在斜坡上的方法

在这里插入图片描述


方法

public bool OnSlope()
{
if (isJump)
return false;

reasonml
Copy
    RaycastHit hit;
    //向下打出射线(检查是否在斜坡上)
    if (Physics.Raycast(transform.position, Vector3.down, out hit, characterController.height / 2 * slopeForceRayLength))
    {
        //如果触碰到的点的法线,不是在(0,1,0)这个方向上的,那么就人物处在斜坡上
        if (hit.normal != Vector3.up)
        {
            return true;
        }
    }
    return false;
}

它定义了一个名为 OnSlope() 的公共函数,返回一个布尔值。这个函数用于检查游戏角色是否处于斜坡上。

在函数内部,首先检查 isJump 变量的值。如果该变量的值为真,函数将直接返回 false,意味着角色不在斜坡上。

接下来,函数使用 Physics.Raycast() 函数来检测角色下方是否有斜坡。这个函数会向下发射一条射线,如果该射线碰到了斜坡,那么射线碰撞信息将被存储在 hit 变量中。Physics.Raycast() 函数的参数包括起点(transform.position),方向(Vector3.down),射线长度(characterController.height / 2 * slopeForceRayLength)等。

如果碰撞信息 hit 中存储的法线向量 hit.normal 不是朝上的(即不是 (0, 1, 0)),那么函数将返回 true,意味着角色处于斜坡上。否则,函数将返回 false,意味着角色不在斜坡上。


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忽然602

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值