【问题标题】:Character fall through ground after playing sometime玩了一段时间后,角色从地上掉了下来
【发布时间】:2016-09-17 12:44:59
【问题描述】:

我有一个具有复合对撞机设置的角色(由许多原始对撞机形状设置的对撞机,每个身体部位一个)和一个使用缩放立方体设置的简单地面。立方体在 x 轴上缩放 1000,在 z 轴上缩放 30。事情还处于早期阶段,所以没有昂贵的图形,只有原始形状和场景中的低多边形角色。刚开始一切都很顺利,但有一段时间,在我玩了一段时间后,角色开始掉到地上。有人遇到过这个问题并知道如何解决吗?

【问题讨论】:

  • 这种情况最常发生在您陷入建模/连接不良地形的裂缝之间(由于浮点舍入错误)。如果你的“地板”真的是一个单一的固体物体,我接下来要检查的是物理循环是否以足够高的频率运行,以至于玩家在下一个滴答声之前不能掉入物体太远。如果上述所有方法都失败了,我会让你的对撞机稍微变大。
  • 我的固定时间步长是 0.02,最大允许时间步长是 0.3333333,这仍然是默认值。可以吗?而且我也意识到这似乎只有在我播放具有高播放时间的动画时才会发生,该动画的播放时间设置为 3。
  • 按照您的建议,我已将 Fixed Timestep 调整为 0.002,这快了 10 倍。情况似乎好多了。但是CPU可以吗?正如我听说的那样,减小这个值会对 CPU 性能产生影响。你的推荐值是多少?顺便说一句,你试试这个解决方案吗? (answers.unity3d.com/answers/1244965/view.html)。我试过了,还是不行。
  • 该链接对我来说已损坏(访问被拒绝)。在使用浮点数跟踪经过的时间之前,我遇到了(脚本化的)动画问题。随着数字的增加,精度下降,因此动画变得“生涩”。不确定这可能是您的问题。我相信如果表面足够厚以至于您无法完全正确地修剪它,您更有可能获得良好的效果。回复:TimeStep,恐怕没有正确的答案。这是一个完全取决于你的游戏的平衡,但是,如果你仍然遇到问题,听起来低 TimeStep 可能只是掩盖了问题
  • 是的,我已经将它增加了一点到 0.005。问题现在不会发生。希望以后再也不会发生这种情况,因为我几乎整天都在解决这个问题@@。顺便说一句,有人建议我应该为我的角色设置物理材料,但我认为没有必要。我想如果我这样做,物理引擎会浪费资源来计算我的角色的摩擦力、弹力,这对我来说不是必需的,对吧?

标签: unity3d game-physics


【解决方案1】:

Here 是 SisterKy 可能原因的一个很好的参考列表。

检查涉及的每个对象(FallingObjects 和 GroundObjects)

  • 对象有碰撞器吗?如果没有,

    1. 选择对象
    2. 转到顶部栏
    3. 组件
    4. 物理学
    5. 选择合适的对撞机(如果是地形,检查最后一个选项卡,小齿轮)
  • 注意:mesh-collider 可能会导致问题。

    • 特别是,如果 FallingObject 和 GroundObject 都有网格碰撞器。
    • 特别是,如果网格是动画的。
    • 为避免网格碰撞器,您可以从几个原始碰撞器(在父级、子级或兄弟级游戏对象中)构建网格的近似形状。
    • 如果您无论如何都需要 Mesh-collider,您可以尝试将额外的原始对撞机放置在它们不会“强制”碰撞的地方。
  • 对象是触发器吗?如果是这样,

    1. 选择对象
    2. 找到它的 Collider-Component(如果是地形,检查最后一个选项卡,小齿轮)
    3. 去掉对“IsTrigger”的勾选
  • 对撞机放置好了吗? 调整中心、大小和皮肤宽度(从 0.1 开始),直到绿色轮廓大致适合角色 (如果你得到非常奇怪的值,可能是由于缩放(例如,你的网格太大,所以你缩小到 0.01))

    您可以尝试将所有定位归零(统一和您的建模程序)

FallingObject 和 GroundObject 互相有问题

  • FallingObject-Collider 和 GroundObject-Collider 相互交叉。
    将物体移动到离地面很远的地方(让它从相当高的高度落下以进行测试)。
    所有的!不仅仅是对撞机或附加到它的其他东西(例如角色控制器的相机)
    注意:戳穿(“灰色胶囊”?)即使被禁用也可能会导致问题。 (我自己也不确定这意味着什么,很抱歉......发布此解决方案的答案不是很具体 =/)

导入的对象(.obj、.fbx、.max 等)

  • 在将对象拖入场景之前(如果已经存在则删除),

    1. 看层次
    2. 查找型号
    3. 属性
    4. 选中“生成碰撞器”
    5. 点击应用
    6. 现在拖到场景中
  • 法线是否正确?你可能需要

    1. 回到你的建模程序
    2. 点击翻转/反向法线
  • 网格干净吗?
    据报道,单个 2 顶点“三角形”会导致严重的对撞机问题。

  • 几何形状相当复杂?然后你需要将 Mesh-Collider 设置为凸

    1. 选择对象,
    2. 网格对撞机组件
    3. 检查“IsConvex”

FallingObject 有一个角色控制器

  • 是否应用了刚体?如果没有,

    1. 选择下落物体
    2. 顶栏
    3. 组件
    4. 物理学
    5. 刚体
  • 是否应用了重力?如果没有,

    1. 选择下落的物体。
    2. 找到它的刚体组件。
    3. 检查“重力”
  • 还有 MouseOrbit?

    确保 MouseOrbit 永远不会拥有/拾取 MouseOrbit 附加到的相应对象(通常是相机)的任何父对象作为 MouseOrbit 目标,否则生成的“狗追逐尾巴”场景将导致跌落。 http://answers.unity3d.com/questions/161386/third-person-controller-falls-through-terrain-upon.html

GroundObject 是一个地形

  • 有传言说,Terrain Collider 可能会通过使用地形工具包资产包来制作地形而搞砸。

  • Collisionmatrix 可能会引起麻烦。

    1. 转到编辑/项目设置
    2. 物理
    3. 碰撞矩阵

脚本

  • FallingObject 有一个带有“transform.Translate”或“transform.position =”或其他各种“时髦”脚本的脚本。
    这可能会“违背其意愿”推动对象通过对撞机。尽量避免它。 (例如,使用“速度”或尝试 SimpleMove)

保持场景清洁

尤其是 mac 版本在面对太多多余的废话时似乎有点错误。可能会以某种方式禁用所有对撞机。

调试

  • 增加每帧的物理计算。
  • 尝试捕捉对撞机的穿透(这并不能解决问题的根源)。
  • 从高处放下角色和默认立方体。
    • 如果两者都掉下来,请调查地板的特性。
    • 如果只有角色这样做,请调查玩家的属性。
  • 有时好的旧重启或重新导入可能只是解决问题...
  • 你可能想试试 Debug.Log(colliderFlag);检查,如果它真的没有接触。 http://unity3d.com/support/documentation/ScriptReference/CollisionFlags.Below.html

注意

在最小化或 alt-tab 编辑器时会发生跌落。

这是一个已知问题;不用太担心,它只是在编辑器中,不会在最终构建的游戏中发生。

请注意:我对这件事没有任何能力……只是收集了我发现的东西。因此,如果您发现任何(严重?!)错误,请指出。

我的来源:

http://answers.unity3d.com/questions/39789/tornadotwinswormvideo2-help.html

http://answers.unity3d.com/questions/17779/character-model-sinks-through-floor.html

http://answers.unity3d.com/questions/31397/object-falls-through-floor.html

http://answers.unity3d.com/questions/31033/items-falling-through-floor.html

http://answers.unity3d.com/questions/29719/falling-through-the-floor-issue.html

http://answers.unity3d.com/questions/43206/falling-through-floor.html

http://answers.unity3d.com/questions/35010/my-object-falls-through-terrain.html

http://answers.unity3d.com/questions/8369/whenever-i-run-my-game-i-fall-through-any-terrain.html

http://answers.unity3d.com/questions/21021/enemies-fall-through-floor-when-chasing-player.html

http://answers.unity3d.com/questions/17221/char-is-falling-through-the-terrain-when-alt-tabbi.html

http://answers.unity3d.com/questions/63750/my-characters-and-rigidbodys-fall-on-my-new-terrai.html

http://answers.unity3d.com/questions/57077/character-collider-physics-bug-in-unity-33-falling.html

http://forum.unity3d.com/threads/38996-first-person-controller-falls-through-the-terrain

【讨论】:

  • 注意:一些链接像姐妹一样被破坏了。不过,这听起来确实很有希望。我相信我可能有一个与鼠标轨道无关的相机问题,但我只有在为时间线激活某个相机时才会遇到它。所以,我认为罪魁祸首可能是相机,但我无法确定问题所在。我的方法适用于另一个过场动画角色,但两者在预览模式下都很好,只有在游戏模式下,一个角色会掉到地板上。
猜你喜欢
  • 1970-01-01
  • 2021-10-17
  • 2018-08-19
  • 1970-01-01
  • 1970-01-01
  • 2019-11-12
  • 2017-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多