【问题标题】:How to prevent colliders from stopping each other while colliding如何防止碰撞器在碰撞时相互停止
【发布时间】:2016-10-27 20:15:16
【问题描述】:

我正在开发一个 3D 统一项目,其中有一个平台和一个在该平台上运行的角色,我将角色放在平台上但它开始倒下,所以我按照以下步骤解决了问题:

  1. 在物体上添加了一个胶囊对撞机,它仍然会从平台上掉下来

  2. 在平台上添加了一个对撞机,然后它并没有掉下来,但是现在这两个物体相互隔离,所以角色只是在同一个地方移动她的腿,

有什么方法可以让角色在平台上移动,同时仍然使用碰撞器?

注意 1:我在图像中制作了对撞机触发器,以在没有对撞机的情况下做出相同的行为。

注意 2:我尝试将它们中的每一个放在不同的层上,但我遇到了同样的问题。


代码:

void Update () 
{
    rbody.velocity = new Vector3(rbody.velocity.x,0f,playerVelocity*Time.deltaTime);

    rbody.transform.rotation = Quaternion.identity;
                     .
                     .
                     .
}

【问题讨论】:

  • 在图像中,您的玩家似乎被困在马路中间,您可以尝试“手动”将他放在马路顶部,看看是否有效?
  • 图像只是为了显示碰撞器触发时物体正在潜水,但由于碰撞而现在卡住了

标签: c# unity3d game-physics physics-engine


【解决方案1】:

制作对撞机触发器就像不添加对撞机一样。仅当您希望对撞机检测到某物但不阻止它撞到某物时才使用触发器。所以我相信你应该在角色和平台上都添加一个非触发碰撞器,但首先要确保当你首先手动放置角色时碰撞器不相交。如果这不起作用,请准确告诉我角色和平台的坐标以及它们的碰撞器的大小,我将尝试复制您的场景以找出问题所在。希望这可以帮助!

【讨论】:

  • 我删除了 isCollider 现在它是假的
  • 对撞机的大小和物体的质量重要吗?
  • 你的意思是你删除了“isTrigger”?
  • 不,对撞机的大小或质量在您的情况下并不重要。
  • 是的,我删除了它,现在这些对象彼此之间是实体的
【解决方案2】:

嗨,朋友,您有 2 个选择...

  1. 改变刚体的质量
  2. 使用 PhysicsMaterial 并减少对象之间的摩擦(将物理材质添加到您的平台)
  3. 提高脚本中的力量和移动速度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多