Hy Guys! 我有一个非常讨厌的bug,我无法摆脱它。 情况是,我有一个父级,附加了以下脚本,以及一个触发器box2d对撞机。它有一个孩子,有一个rigidbody2d(运动学,重力= 0,冻结位置x和旋转z),一个精灵渲染器和一个多边形对撞机(有4个边缘)。 我的问题是,当场景被加载时,有时候我的孩子会对象(总是随机的多少和对象)跳转到transform.position 0,0,0。
我链接脚本,附加到父
的内容using UnityEngine;
using System.Collections;
public class FallingSpikeHazard : MonoBehaviour
{
public GameObject spike;
private Rigidbody2D spikeRigidbody;
[SerializeField]
private Vector3 startPosition;
void Awake ()
{
startPosition = spike.transform.localPosition;
}
void Start ()
{
spikeRigidbody = spike.GetComponent<Rigidbody2D> ();
Helper.JustReset += ResetMe;
Invoke ("CheckPosition", Time.deltaTime);
}
void CheckPosition ()
{
if (spike.transform.localPosition != startPosition) {
Debug.LogError ("t1" + spike.transform.localPosition);
spike.transform.localPosition = startPosition;
Debug.LogError ("t2" + spike.transform.localPosition);
}
}
void OnDestroy ()
{
Helper.JustReset -= ResetMe;
}
void ResetMe ()
{
spikeRigidbody.gravityScale = 0;
spikeRigidbody.isKinematic = true;
if (startPosition != Vector3.zero) {
spike.transform.localPosition = startPosition;
}
}
void OnTriggerEnter2D (Collider2D other)
{
if (other.gameObject.tag.Equals ("Player")) {
spikeRigidbody.isKinematic = false;
spikeRigidbody.gravityScale = 1;
}
}
}
事件不会被调用,另一方面,如果我禁用脚本,它会继续发生。没有任何参考这些GameObjects。我没有动画或附加动画师。
什么可能导致我的问题?
谢谢你:)
答案 0 :(得分:0)
你需要在父GameObject中有一个Rigidbody2D组件才能调用OnTriggerEnter函数。