2015-07-19 43 views
1

我试图在平台顶部的圆上面反射平铺,平台固定时没有问题,但是当平台移动的脚本被激活时,瓷砖崩溃的圆圈。Unity3D Collider2D不会与翻译的Collider2D发生碰撞

sketch describing the problem

Inspector settings

这是脚本用于移动平台:

using UnityEngine; 
using System.Collections; 

public class PlatformMoveH : MonoBehaviour { 

    public float min; 
    public float max; 
    public float speed; 
    public float sens; 

    void Start(){ 
     sens *= speed; 
    } 

    void Update() { 
     if (transform.localPosition.x > max) { 
      sens = -speed; 
     } else if (transform.localPosition.x < min){ 
      sens = speed; 
     } 
     transform.Translate (sens * Time.deltaTime, 0, 0); 
    } 
} 

我不能在此处添加图片,但在统一的答案,你可以与图片更好地理解问题

http://answers.unity3d.com/questions/1009619/collider2d-and-translate-problem.html

我不知道是什么问题。
任何人都可以帮助我请

回答

2

你必须添加一个kinematic Rigidbody2D到你的移动对撞机。没有刚体的碰撞体被Unity视为静态碰撞体,不应移动。

official documentation

物理引擎假定静态撞机从未移动或改变,可以基于这个假设有用的优化。因此,不应在游戏过程中禁用/启用,移动或缩放静态碰撞体。如果你确实改变了一个静态对撞机,那么这将导致物理引擎产生额外的内部重新计算,从而导致性能下降。更糟的是,这些变化有时会使对撞机处于未定义的状态,导致错误的物理计算。例如,针对改变的静态对撞机的光线投射可能无法检测到它,或者在空间的随机位置检测到它。

+0

谢谢!!!!! – tutuum