【发布时间】:2019-09-27 13:15:10
【问题描述】:
我已经通过围绕线条手动实例化它来为线条渲染器添加胶囊碰撞器。我已经在这个场景中添加了不同的精灵。我使用 Physics2D Raycaster 检测到这些精灵顶部的触摸在主相机上和脚本中,在 IPointerEnterHandler 的帮助下,将它们放入包含精灵渲染器的所需游戏对象中。下面给出的示例代码
public class TouchDetect:MonoBehaviour,IPointerEnterHandler,IPointerExitHandler
{
public void OnPointerEnter(PointerEventData eventData)
{
if (eventData.pointerEnter.gameObject.name == "redcircle2(Clone)" )
{
sound[1].source.clip = sound[1].clip;
sound[1].source.loop = true;
sound[1].source.Play();
}
}
}
我添加的胶囊碰撞器是3d碰撞器。如何检测碰撞器顶部的触摸以及2d碰撞器?
我尝试了下面的代码,但没有工作。
if (Input.touchCount > 0 || Input.GetMouseButton(0))
{
Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
bool collided = this.GetComponent<CapsuleCollider>().bounds.Contains(mousePos);
if (collided)
{
Debug.Log("Touched collider " );
}
else
{
Debug.Log("Not collided");
}
}
【问题讨论】:
-
对于 3D 对撞机,您需要一个
PhysicsRaycaster,但您似乎只有一个仅适用于 2D 对撞机的Physics2DRaycaster。 -
是的,这就是问题所在..