我试图在碰撞后修改类组件的属性, 但财产似乎没有设定。
void OnCollisionExit2D (Collision2D myCollision) {
Debug.Log ("OnCollisionExit2D in Player:" + myCollision);
CompoMyClass compo = myCollision.gameObject.GetComponent<CompoMyClass>();
if (compo.collideOnce == true)
return;
compo.collideOnce = true;
// it always goes here :(
}
你知道为什么吗?
public class CompoMyClass : MonoBehaviour {
public bool collideOnce = false;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
}
答案 0 :(得分:1)
确保您每次碰撞都在查看相同的Component组件实例。如果此组件附加到多个对象,则每个对象都会有自己的collideOnce变量。
这样做的好方法是明确标记每个对象,分配一个ID,例如
Guid ID = Guid.NewGuid();
还要确保您正在碰撞的对象具有正确的组件,以防止NullReferenceException,并且您正确地退出了碰撞。您可能想切换到OnCollisionEnter。
最后,请确保您没有在其他地方设置该值为false。