【问题标题】:how to avoid collision between first and third layer when second is between them? Unity 2D C#当第二层在第一层和第三层之间时,如何避免它们之间的碰撞? Unity 2D C#
【发布时间】:2021-01-25 13:56:04
【问题描述】:

我有 3 层:cartrackoutOfTrack 层。在 cartrack 之下是 outOfTrack 层。当 cartrack 上时,检测到 caroutOfTrack 之间的碰撞,所以我想以某种方式避免它.
cartrack时,如何避免caroutOfTrack之间的碰撞检测,并检测它仅当汽车接触 outOfTrack 时?

【问题讨论】:

    标签: c# unity3d collision-detection game-physics game-development


    【解决方案1】:

    转到编辑->项目设置->物理。 那里有碰撞矩阵。使用复选框,您可以定义哪个图层与哪个图层发生碰撞。

    编辑:碰撞矩阵不应该实时更改所有现有联系人。如果我们要这样做,我们将不得不重新评估世界上的每一个联系人,这可能非常昂贵并且很容易被滥用。检查this。因此,您可以尝试使用代码更改碰撞矩阵,您可能可以这样做,但是我建议根据 空间 而不是 时间 来处理它们的碰撞.

    我的意思是,您不是在您的汽车偏离轨道时尝试检测碰撞,而是通过相应的图层和碰撞器检测碰撞在哪里 跑偏了。

    如果您仍然想在运行时更改碰撞矩阵,可以尝试查看docs

    【讨论】:

    • 如果我禁用汽车和 outOfTrack 层之间的碰撞,那么我无法检测到汽车何时偏离轨道。
    • 用一个新层来处理。考虑你想要的行为并相应地设置碰撞矩阵
    • @rustyBucketBay 起初也这么认为,但请注意,问题尚不清楚,因为 OP 实际上并不想真正忽略任何层 ^^ OP 宁愿只对一层做出反应,如果其他层当前不再被触及^^这需要启用两个层碰撞
    • 感谢@derHugo 发现这一点。更新答案
    猜你喜欢
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多