【发布时间】:2014-04-04 15:05:25
【问题描述】:
我的“玩家”游戏对象站在一个平台上。他按了一个组合键,我确认他站在正确的平台上,然后运行以下代码:
Physics2D.IgnoreLayerCollision(playerLayer, plataformLayer);
他的意图是从平台上掉下来。相反,什么都不会立即发生。玩家仍然在平台上并且可以四处走动——只有当他离开平台并试图回到平台上时,他才会从平台上掉下来。
所以我做了一个临时的丑陋解决方法:
Physics2D.IgnoreLayerCollision(playerLayer, plataformLayer);
rigidbody2D.AddForce(transform.up * jump / 1.5f);
这将迫使玩家跳跃,使 Unity “重新计算”碰撞,并且玩家将如我所愿地穿过平台。更奇怪的部分是:如果跳跃不够高(100 力在 1 质量和 0.5 重力尺度似乎是最小值),玩家仍然会降落在平台上,即使 Unity 应该忽略这些碰撞.
我还尝试用力和直接速度将玩家向下推,但没有运气 - 他仍然与平台发生碰撞,只是在远离平台一次后才停止与平台碰撞。
另外,我的播放器 Rigidbody2D 检测模式设置为 Continuous,我尝试以多种不同方式设置平台,有无 Rigidbody2D。
关于如何让玩家在碰撞开始被忽略时立即从平台上掉下来的任何想法?提前致谢。
【问题讨论】:
-
过去,我通过更改平台的碰撞层(与玩家以外的所有其他物体发生碰撞)来管理跌落平台。跨度>
标签: unity3d collision-detection