ue3d推动对象如何在Unity中实现

推动对象如何在Unity中实现

分类:

首先需要在 Unity 中搭建一个小场景,这里用了几个胶囊和盒子作为演示,盒子做成了一个预制件,将其标记为了 MovingBox,该对象有一个刚体和一个盒子碰撞器。

ue3d - 推动对象如何在Unity中实现

如果要实现该推动功能,则需要使用 OnControllerColliderHit() 函数,这个伪代码解释了推动盒子的逻辑。

private void onControllercolliderHit(ControllercolliderHit hit)
{
// 检查移动的箱子
// 确认它是否有刚体
// 计算方向推
// 推(推的方向和推的力量)
}

在播放器脚本中,声明了一个名为 _pushForce 的新变量,它将添加到盒子被推动时的方向。

在 OnControllerColliderHit 函数中,创建了另一个变量来获取盒子的刚体。

然后检查了 MovingBox 标签并添加了另外 2 个条件。

如果刚体为 null 或 kinematic,那么什么也不做,如果 hit.moveDirection.y 小于 -0.3f,则意味着对象在玩家下方,将退出该函数。

最后,创建 pushDirection 向量并将其分配给刚体速度乘以推力。

private float _pushForce = 2.0f;
// ...
  private void OnControllerColliderHit(ControllerColliderHit hit)
    {
        Rigidbody body = hit.collider.attachedRigidbody;
        if (hit.transform.tag =="MovingBox" )
        {
            if ( body == null ll body.isKinematic)
            {
                 return;
            }
            if (hit.moveDirection.y < -0.3f)
            {
                return;}
            Vector3 pushDirection = new Vector3(hit.moveDirection.x,0,0);
            body.velocity = pushDirection * _pushForce;
    }
    // 更多与推框无关的代码
}

到这里, 现在就可以在场景中操纵已推动盒子向左还是向右了。

ue3d - 推动对象如何在Unity中实现

相关信息

  • 类型:知识
  • 字数:291
  • 字符:1407
  • 适用软件:Unity
  • 说明:无
  • 编号:92622

热门内容

提示:3D天堂作为服务提供者,尊重网络版权及知识产权,对某些行为的发生不具备充分的监控能力,若无意间侵犯到您的权利,请 联系我们,我们会在收到信息后尽快给予处理。

本站文章版权归本站自创作者所有,未经允许不得转载!