【问题标题】:How to detect touch on colliders for a line renderer added manually in Unity?如何检测在 Unity 中手动添加的线渲染器对碰撞器的触摸?
【发布时间】: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
  • 是的,这就是问题所在..

标签: c# unity3d 2d


【解决方案1】:

在 Unity 中有 2 个完全不同且独立的物理系统 - Physics(3D) 和 Physics2D

如前所述,它们是分开的,不会以任何方式进行交互,例如Collider 永远不会跟踪与 Collider2D 的任何冲突。

这同样适用于PhysicsRaycasterPhysicsRaycaster2D

在您的场景中,您有一个 CapsuleCollider,它是一个 3D 对撞机。

只能使用PhysicsRaycaster 进行跟踪 - 不能 使用PhysicsRaycaster2D

&rightarrow;你的Camera 应该有一个PhysicsRaycaster 而不是PhysicsRaycaster 2D,或者如果它应该是一个 2D 游戏,你应该只使用 2D 对撞机。

【讨论】:

    【解决方案2】:
    if (eventData.pointerEnter.gameObject.name == "redcircle2(Clone)")
    

    我很确定这条线是错误的来源。 如果您正在实例化,那么我将猜测您正在从公共 Transform 实例化,并且您已将一些已添加碰撞的 Prefab 放入其中,对吗? 然后检查您添加的 THAT PREFAB 具有的游戏标签并检测到,而不是 "redcircle2(Clone)"

    【讨论】:

      猜你喜欢
      • 2015-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多