当有许多具有相同标签的对撞机时,有没有办法只访问一个对撞机?
Is there a way to only acces one collider when there are many colliders with the same tag?
我有一个脚本可以将您正在触摸的对象移动到您手指的位置,它基于一个标签,因此当我触摸一个带有该标签的对象时,所有具有相同标签的对象都会移动到该位置。有没有办法只让我触摸的那个移动?
剧本
{
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);
}
}
}
} ```
您可以使用 hitInformation.collider.gameObject
访问您的 Raycast 正在接触的对象。
根据我看到的代码,我认为这应该可行:
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);
}
}
}
我假设脚本在所有 "RocketPrefab" GameObjects 的父级上,然后您使用行 transform.position = touchPosition;
移动它们
根据该假设...要获得光线投射的特定光线,您需要编辑脚本以移动 collider.gameObjct.transform
而不仅仅是 transform
已编辑固定更新
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; // Note this line and how it targets the specific transform
Debug.Log(touchPosition);
}
}
}
我有一个脚本可以将您正在触摸的对象移动到您手指的位置,它基于一个标签,因此当我触摸一个带有该标签的对象时,所有具有相同标签的对象都会移动到该位置。有没有办法只让我触摸的那个移动?
剧本
{
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);
}
}
}
} ```
您可以使用 hitInformation.collider.gameObject
访问您的 Raycast 正在接触的对象。
根据我看到的代码,我认为这应该可行:
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);
}
}
}
我假设脚本在所有 "RocketPrefab" GameObjects 的父级上,然后您使用行 transform.position = touchPosition;
根据该假设...要获得光线投射的特定光线,您需要编辑脚本以移动 collider.gameObjct.transform
而不仅仅是 transform
已编辑固定更新
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; // Note this line and how it targets the specific transform
Debug.Log(touchPosition);
}
}
}