首页 > 解决方案 > 当有许多具有相同标签的对撞机时,有没有办法只访问一个对撞机?

问题描述

我有一个脚本,可以将您正在触摸的对象移动到手指的位置,它基于标签,因此当我触摸带有标签的对象时,所有具有相同标签的对象都会移动到该位置。有没有办法只让我触摸的那个移动?

剧本

 {
     void FixedUpdate()
     {
         if (Input.touchCount > 0)
         {            
             RaycastHit2D hitInformation = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position),Camera.main.transform.forward);            
                 if (hitInformation.collider.gameObject.tag == "RocketPrefab")
                 {                    
                     Vector3 touchPosition = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position);
                     touchPosition.z = -4;
                     transform.position = touchPosition;
                     Debug.Log(touchPosition);

                 }                            
         }
     }
 } ```

标签: c#unity3dtagsraycasting

解决方案


您可以访问您的 Raycast 正在接触的对象hitInformation.collider.gameObject

从我看到的代码来看,我认为这应该可行:

     void FixedUpdate()
     {
         if (Input.touchCount > 0)
         {            
             RaycastHit2D hitInformation = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position),Camera.main.transform.forward);            
                 if (hitInformation.collider.gameObject.tag == "RocketPrefab")
                 {                    
                     Vector3 touchPosition = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position);
                     touchPosition.z = -4;
                     hitInformation.collider.gameObject.transform.position = touchPosition;
                     Debug.Log(touchPosition);
                 }                            
         }
     }

推荐阅读