Unity3D Collider2D不会与已翻译的Collider2D发生冲突

时间:2015-07-19 09:47:27

标签: c# unity3d

我试图在平台顶部的圆圈上方弹出平铺,平台固定时没有问题,但是当激活平台移动的脚本时,平铺会使圆圈崩溃。

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

我不知道是什么问题。
请有人帮帮我吗

1 个答案:

答案 0 :(得分:2)

您必须为移动的对撞机添加运动Rigidbody2D 。没有刚体的碰撞器被Unity视为静态碰撞器,不应该被移动。

来自official documentation

  

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