当我使用我的手机作为测试设备时,OnTriggerEnter有点问题。 我有一些触摸代码可以成功让我在屏幕上拖动对象。 然后我让对象与屏幕上的其他对象发生碰撞。
在我将物体变成预制件之前,这种方法非常有效。 (我需要这样做,因为对象是在运行时随机生成的)
现在,我仍然可以移动屏幕周围的物体,但它们不再与其他物体碰撞,这些物体也是预制物。但是,当它在统一编辑器中的笔记本电脑上运行时,它仍能正常工作。
我的所有物体都在它们上面有碰撞器并且检查了触发器,并且移动物体具有刚体。
开启触发输入代码
style.css
触摸代码
public void OnTriggerEnter(Collider other)
{
Debug.Log ("here");
Debug.Log(this.gameObject.tag +"is this");
Debug.Log(other.gameObject.tag + "is other");
if (this.gameObject.tag == other.gameObject.tag)
{
Debug.Log("here2)");
Reftomanager.miniGameScore++;
Reftomanager.updateScore();
Destroy(this.gameObject);
}
}
我完全难过,所以任何帮助都会令人惊叹。
由于
答案 0 :(得分:1)
最近刚收到同样的错误。我建议使用
If(other.gameObject.CompareTag ("YourTagName"))
另外,如果您最近添加了标签或编辑过任何标签,我发现Unity有一个错误,您的标签将不会在您的Android版本中注册,除非您重新启动统一。
GL
答案 1 :(得分:0)
由于您使用3D对撞机,您分配它们的位置是否可能不同? Touch.position是一个Vector2,这意味着ScreenToWorldPoint将使用0表示z。如果您使用的z值不是0的Vector3来获取编辑器中的世界点(独立输入),即使x和y相同,它也可以获得不同的值。
另一种可能性是,在对象实例化时,代码中的其他位置发生特定于平台的错误。如果它不在同一个Monobehavior中,你的移动代码仍然可以正常工作。
如果你有Android,可以使用带有Unity标记的Android Monitor来检查错误消息。