Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 防止对撞机在地形中发生故障_Unity3d_Collision Detection_Game Development - Fatal编程技术网

Unity3d 防止对撞机在地形中发生故障

Unity3d 防止对撞机在地形中发生故障,unity3d,collision-detection,game-development,Unity3d,Collision Detection,Game Development,我正在使用Unity 2019.2.1f1中的地形和带有网格碰撞器的洞穴自定义网格 我的角色有一个比洞穴入口大得多的太空舱对撞机,应该不能进入。但由于两台对撞机都是圆的,他可以在山洞里生效,在地形中闪烁对撞机 我认为它的速度不是太快,我正在用FixedUpdate()中的rb.MovePosition()移动角色,并且我将其刚体碰撞检测设置为连续推测(尝试了所有“连续”模式) 在下面的动画中,可以看到角色周围的洞穴网格和胶囊碰撞器 我怎样才能防止这种情况发生?我怎么能对Unity说:“我希望对撞

我正在使用Unity 2019.2.1f1中的地形和带有网格碰撞器的洞穴自定义网格

我的角色有一个比洞穴入口大得多的太空舱对撞机,应该不能进入。但由于两台对撞机都是圆的,他可以在山洞里生效,在地形中闪烁对撞机

我认为它的速度不是太快,我正在用
FixedUpdate()
中的
rb.MovePosition()
移动角色,并且我将其刚体碰撞检测设置为连续推测(尝试了所有“连续”模式)

在下面的动画中,可以看到角色周围的洞穴网格和胶囊碰撞器

我怎样才能防止这种情况发生?我怎么能对Unity说:“我希望对撞机坚如磐石,而不是棉花糖”

联合体中的对撞机坚如磐石。它们无法进行任何软物理,它们相互扭曲的唯一时刻就是你强迫它们这样做的时候

在这里,您将通过强制将刚体位置设置为一个不可能的位置。尽管没有足够的空间,但游戏会尽最大努力让你的身体保持僵硬

你可以

  • 只使用力和速度。您可以简单地将速度设置为您选择的方向,并在停止移动时将其设置为0,或者使用
    AddForce
    ,这基本上是相同的

  • 继续使用
    MovePosition
    ,但使用
    SphereCast
    CapsuleCast
    检查是否有足够的空间先移动

    • 联合体中的对撞机坚如磐石。它们无法进行任何软物理,它们相互扭曲的唯一时刻就是你强迫它们这样做的时候

      在这里,您将通过强制将刚体位置设置为一个不可能的位置。尽管没有足够的空间,但游戏会尽最大努力让你的身体保持僵硬

      你可以

      • 只使用力和速度。您可以简单地将速度设置为您选择的方向,并在停止移动时将其设置为0,或者使用
        AddForce
        ,这基本上是相同的

      • 继续使用
        MovePosition
        ,但使用
        SphereCast
        CapsuleCast
        检查是否有足够的空间先移动


      尝试使用
      rb.AddForce
      而不是
      rb.MovePosition
      谢谢,我想使用
      MovePosition
      但是由于这个问题,我想我会混合使用
      AddForce
      和RootMotion(感谢
      OnAnimatorMove()
      回调)。尝试使用
      rb.AddForce
      而不是
      rb.MovePosition
      谢谢,我想使用
      MovePosition
      但是由于这个问题,我想我会混合使用
      AddForce
      和RootMotion(感谢
      OnAnimatorMove()
      回调)。好的,谢谢你的解释,我想使用
      MovePosition()
      做得很好,而不是直接改变玩家的位置。因为游戏玩家说“它创造了一个平滑的过渡”并且“不传送”玩家。它与
      AddForce()
      配合得很好,现在我只需要处理当玩家改变方向时取消先前的水平速度,这样他就不会“在冰上滑动”。移动位置与改变位置相比确实有一些优势,因为它允许相机的帧插值,并将发送碰撞事件,但这不是您想要的。好的,谢谢您的解释,我想使用
      MovePosition()
      做得很好,而不是直接更改播放器的位置。因为游戏玩家说“它创造了一个平滑的过渡”并且“不传送”玩家。它与
      AddForce()
      配合得很好,现在我只需要处理当玩家改变方向时取消先前的水平速度,这样他就不会“在冰上滑动”。移动位置与改变位置相比确实有一些优势,因为它允许相机的帧插值,并将发送冲突事件,但这不是您想要的。