一段时间后,角色掉落地面

时间:2016-09-17 12:45:00

标签: unity3d game-physics

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

1 个答案:

答案 0 :(得分:1)

Here是SisterKy提​​供的可能原因的良好参考列表。

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

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

    1. 选择对象
    2. 转到顶栏
    3. 组件
    4. physics
    5. 选择合适的对撞机(如果是地形,请检查最后一个标签,小齿轮)
  • 注意:网格对撞机可能会导致问题。

    • 特别是,如果FallingObject和GroundObject都有网格对撞机。
    • 特别是,如果网格是动画的。
    • 为了避免网格对撞机,您可以从几个原始对撞机(在父对象,子对象或兄弟游戏对象中)构建网格的近似形状。
    • 如果您需要一个网格对撞机,无论如何,您都可以尝试将其他原始对撞机放置在他们不会采取强制措施的地方。碰撞。
  • 对象是触发器吗?如果是的话,

    1. 选择对象
    2. 找到它的碰撞器 - 组件(如果是地形,检查最后一个标签,小齿轮)
    3. 删除检查' IsTrigger'
  • 对撞机放好了吗? 摆弄中心,大小和皮肤宽度(从0.1开始),直到绿色轮廓大致适合角色 (如果你得到非常奇怪的值,可能是由于比例(例如你的网格太大而你缩小到.01)。

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

FallingObject和GroundObject彼此之间存在问题

  • FallingObject-Collider和GroundObject-Collider相互交叉 将物体移动到地面以上(让它从一些相当高的高度落下以用于测试目的) 所有的!不仅是对撞机或附着在其上的其他东西(例如角色控制器的摄像机)
    注意:即使它被禁用,拨打("灰色胶囊"?)也可能导致问题。 (我不确定这意味着什么,我很抱歉......发布此解决方案的答案并不是非常具体= /)

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

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

    1. 查看层次结构
    2. 找到模型
    3. properties
    4. 检查'生成碰撞者'
    5. 点击Apply
    6. 现在拖到现场
  • 法线是否正确?你可能必须

    1. 返回您的建模程序
    2. 点击翻转/反向法线
  • 网格是否干净?
    据说是一个双顶点 - "三角形"造成了不良碰撞问题。

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

    1. 选择对象,
    2. Mesh-Collider-Component
    3. 检查' IsConvex'

FallingObject有一个字符控制器

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

    1. 选择下降对象
    2. 顶栏
    3. 组件
    4. physics
    5. 刚体
  • 是否应用了重力?如果没有,

    1. 选择落下的物体。
    2. 找到它的Rigidbody-Component。
    3. 检查'重力'
  • 并且有一个MouseOrbit?

    确保MouseOrbit永远不会拥有/拾取MouseOrbit附加到的相应对象的任何父级(通常是Camera)作为MouseOrbit-target,或者由此产生的狗追逐尾部' -scenario将导致坠落。 http://answers.unity3d.com/questions/161386/third-person-controller-falls-through-terrain-upon.html

GroundObject是地形

  • 有传言说,Terrain Collider可能会被使用terrain工具包资产包来制作地形。

  • Collisionmatrix可能会造成麻烦。

    1. 转到“修改/项目设置”
    2. 物理
    3. collisionmatrix

脚本

  • FallingObject有一个带有' transform.Translate'的脚本。或者' transform.position ='或其他各种'时髦的'脚本。
    这可能会使物体穿过对撞机而不是它的意志。尽量避免它。 (例如,使用'速度'或尝试使用SimpleMove)

保持场景清洁

特别是mac版本在面对过多的多余垃圾时似乎有点儿麻烦。可能以某种方式禁用所有碰撞器。

调试

  • 每帧增加物理计算。
  • 尝试并抓住对撞机穿透(这不能解决问题的根源)。
  • 从高处删除角色和默认立方体。
    • 如果两者都落空,请调查地板的属性。
    • 如果只有角色,请调查玩家的属性。
  • 有时好的重新启动或重新进口可能就是这个伎俩......
  • 您可能想尝试Debug.Log(colliderFlag);检查,如果它真的没有触及。 http://unity3d.com/support/documentation/ScriptReference/CollisionFlags.Below.html

注意

在编辑器最小化或alt-tabbing时发生下降。

这是一个已知问题;不要太担心它,它只在编辑中,并且在最终制作的游戏中不会发生。

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

我的消息来源:

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