仅在1个对象上的Unity2D Touch事件而不是全部

时间:2014-09-18 09:49:50

标签: unity3d unityscript

所以我有一个脚本可以检测到TAP,并且当我点击一个带有碰撞器的2D物体时会做一些事情。我的问题是我在3个独立的物体上有这个,如果我点击它们中的任何一个它们都会移动(都有相同的脚本,我不能放不同的脚本,因为我有11个对象,我可能在其中一个3)相同的场景中有2个相同的对象。请帮忙。这是我的代码:

void Update()
{
     if(platform == RuntimePlatform.Android || platform == RuntimePlatform.IPhonePlayer)
{
 if(Input.touchCount > 0)
   {
    if(Input.GetTouch(0).phase == TouchPhase.Began)
       {
         checkTouch(Input.GetTouch(0).position);
       }
    }
  }
}

void checkTouch(Vector3 pos)
{
  Vector3 wp = Camera.main.ScreenToWorldPoint(pos);
  Vector2 touchPos = new Vector2(wp.x, wp.y);
  var hit = Physics2D.OverlapPoint(touchPos);

  if(hit.collider2D)
   {
     Move();
   }
}

1 个答案:

答案 0 :(得分:1)

您应该做的是将您点击的对象的信息发送到
您的Move()方法,以便该方法知道要移动的内容,您可以像这样发送它 if(hit.collider2D) { Move(hit.collider2D.gameObject); } hitcollider2D,所以你可以这样做 if(hit) { Move(hit.gameObject); }