我有一个附加到盒子的脚本,盒子上有两个用于物理的碰撞器,一个(稍大)用于在我的玩家走过它时检测 OntriggerEnters。我在盒子上附加了一个脚本,它执行以下操作:
public class ColorChangeCollision : MonoBehaviour {
private GameObject Element;
private Color32 BaseColor, CollisionColor;
private Material ElementMaterial;
void Start () {
Element = this.gameObject;
BaseColor = new Color32(255,255,255,255);
CollisionColor = new Color32((byte)Random.Range(0, 255),(byte)Random.Range(0, 255),(byte)Random.Range(0, 255), 255);
ElementMaterial = Element.gameObject.GetComponent<Renderer>().material;
}
private void OnControllerColliderHit(ControllerColliderHit other)
{
Debug.Log("collision...");
ElementMaterial.color = CollisionColor;
}
private void OnTriggerEnter(Collider other)
{
Debug.Log("enter");
}
private void OnTriggerStay(Collider other)
{
Debug.Log("staying..");
}
private void OnTriggerExit(Collider other)
{
Debug.Log("left...");
ElementMaterial.color = BaseColor;
}
}
主要问题 OnTriggerEnter
或OnControllerColliderHit
永远不会被调用,其他触发事件也不会被调用..
请参阅下面的盒子设置图像及其组件:
请参阅此处了解我的玩家应该调用框的OntriggerEnter
orOnControllerColliderHit
函数:
编辑我根据@Programmer 的建议修改了所有元素。但是OnControllerColliderHit
事件仍然没有被调用..(注意这个函数附在盒子上)