Unity - 快速移动物体的碰撞失败

时间:2016-12-23 15:31:42

标签: c# unity3d 2d collision breakout

有没有人对如何处理Unity中缺少碰撞的快速移动物体有任何建议。我正在为移动设备创造一个突破性游戏,并发现当球拍移动非常快时它会错过与球的碰撞。我将碰撞更改为连续检测,但这会引发奇怪的行为,例如碰撞时推下桨。

我也尝试过使用dontgothrough脚本来使它适用于2D碰撞器但没有成功。有人有什么建议吗?

2 个答案:

答案 0 :(得分:1)

与快速移动的物体碰撞是许多游戏引擎中的一个问题。有几种方法可以处理它:

  1. 让对象变慢。
  2. 让对象变大。
  3. 更新中间步骤的冲突。
  4. 计算对象路径并尝试查找与其他对象发生碰撞的任何点。
  5. 我建议您通过强制执行速度限制来阻止球拍过快。使拨片跟随用户的手指,但不要立即与其对齐。这可能看起来也会更好。

    您也可以加宽划水板,但这可能会对游戏的平衡造成太大影响。

答案 1 :(得分:0)

尝试在刚体中进行连续检测。

如果仍然失败,您可以在当前位置和之前位置之间使用线播。如果球小于垫,则最有可能是每个角和中心。 不要担心那里的表现,5个线路广播几乎无关紧要。

Vector3 prev;
void Start(){
     prev = transform.position;
}
void Update(){
     Vector3 current = transform.position;
     if(Physics.Linecast(prev, current)){
           // Collision
     }
     prev = current;
 }