好的,所以我看不出我的问题在哪里。我在移动平台上使用了OnTriggerEnter。它具有刚体部件,并且在平台和播放器上均将盒碰撞器设置为isTrigger,但是由于某些原因,当播放器触发我的平台时,只会调用OnTriggerExit。我的播放器被标记为团结的播放器...我不知道该怎么办。
代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Moving_Platform : MonoBehaviour
{
[SerializeField]
private float _speed = 1.0f;
[SerializeField]
private Transform _A, _B;
private bool _direction = false;
void FixedUpdate()
{
if(transform.position==_A.position)
{
_direction = false;
}
else if(transform.position== _B.position)
{
_direction = true;
}
if (_direction == false)
{
transform.position = Vector3.MoveTowards(transform.position, _B.position, _speed * Time.deltaTime);
}
if(_direction==true)
{
transform.position = Vector3.MoveTowards(transform.position, _A.position, _speed * Time.deltaTime);
}
}
private void OnTriggerEnter(Collider other)
{
if (other.tag == "Player")
{
other.transform.parent = this.transform;
}
}
private void OnTriggerExit(Collider other)
{
Debug.Log("OMFG");
if (other.tag == "Player")
{
Debug.Log("But why!");
other.transform.parent = null;
}
}
}
所有检查员
答案 0 :(得分:1)
似乎更新到新版本(2020.x)可以解决问题。 感谢您的尝试。
答案 1 :(得分:0)
BoxCollider在Moving_Platform GameObject中添加了两次,其中一个具有“启用了触发器”的值,而另一个则没有。为什么会这样呢? 为了进行更好的测试,您可以在if语句之外添加Debug.Log(other.name)来查看发生的情况。