Android Unity 2D与手机上不工作的预制件发生碰撞
当我使用手机作为测试设备时,OnTiggerEnter有点问题。 我有一些触摸代码,可以让我在屏幕上拖动物体。 然后让这些对象与屏幕上的其他对象发生碰撞 这是完美的工作,直到我把对象变成预制件。(我需要这样做,因为对象是在运行时随机生成的) 现在,我仍然可以在屏幕上移动对象,但它们不再与其他对象碰撞,这些对象也是预设的。不过,在unity编辑器中在我的笔记本电脑上运行时,它仍然可以正常工作 我的所有对象上都有碰撞器,并选中了触发器,移动的对象有刚体 触发时输入代码Android Unity 2D与手机上不工作的预制件发生碰撞,android,unity3d,touch,collision-detection,Android,Unity3d,Touch,Collision Detection,当我使用手机作为测试设备时,OnTiggerEnter有点问题。 我有一些触摸代码,可以让我在屏幕上拖动物体。 然后让这些对象与屏幕上的其他对象发生碰撞 这是完美的工作,直到我把对象变成预制件。(我需要这样做,因为对象是在运行时随机生成的) 现在,我仍然可以在屏幕上移动对象,但它们不再与其他对象碰撞,这些对象也是预设的。不过,在unity编辑器中在我的笔记本电脑上运行时,它仍然可以正常工作 我的所有对象上都有碰撞器,并选中了触发器,移动的对象有刚体 触发时输入代码 public void OnT
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);
}
}
触摸码
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
switch(touch.phase)
{
case TouchPhase.Began:
Ray ray = Camera.main.ScreenPointToRay (touch.position);
if (Physics.Raycast(ray,out hit))
{
thisObject = hit.collider.gameObject;
touchPos = Camera.main.ScreenToWorldPoint (touch.position);
if(thisObject.name!="circle")
{
draggingMode = true;
}
}
break;
case TouchPhase.Moved:
if (draggingMode)
{
touchPos = Camera.main.ScreenToWorldPoint (touch.position);
newCentre = touchPos;
thisObject.transform.position = touchPos;
}
break;
case TouchPhase.Ended:
draggingMode = false;
break;
}
}
}
我完全被难倒了,所以任何帮助都会令人惊讶
谢谢,因为您使用的是3D碰撞器,您为它们指定的位置是否可能不同?Touch.position是矢量2,这意味着将使用0表示z。如果使用z值不是0的矢量3在编辑器中获取世界点(独立输入),则即使x和y相同,也可以获取不同的值 另一种可能性是,在对象实例化时,代码中的其他地方发生了特定于平台的错误。如果你的动作代码不在同一行为中,它仍然可以正常工作
如果你有安卓系统,你可以使用Unity标签来检查错误信息。最近也出现了同样的错误。我建议使用
If(other.gameObject.CompareTag ("YourTagName"))
另外,如果你最近添加了一个标签或编辑了任何标签,我发现unity有一个bug,除非你重新启动unity,否则你的标签不会注册到你的android构建中
GL.谢谢Robert,结果证明Z值在实例化时发生了更改。手动将其更改回0成功:)很高兴听到我能够提供帮助!:)我的问题和你完全一样,关闭了Unity,重新开放,构建了Unity,它成功了。谢谢。对于其他想知道的人,我使用的是Unity 2018.2.0 Fusing Unity 2019.6f1。在添加了一些新标记之后,同样的问题也发生了。是的,重新启动unity是唯一的选择。谢谢