c# - 如何检测在 Unity 中手动添加的线渲染器对碰撞器的触摸?
问题描述
我已经通过在线条周围实例化它手动为线条渲染器添加了一个胶囊碰撞器。我已经在这个场景中添加了不同的精灵。我通过在主相机上使用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");
}
}
解决方案
if (eventData.pointerEnter.gameObject.name == "redcircle2(Clone)")
我很确定这条线是错误的来源。如果您正在实例化,那么我将猜测您正在从公共 Transform 实例化,并且您已将一些已添加碰撞的 Prefab 放入其中,对吗?然后检查您添加的 THAT PREFAB 具有的游戏标签并检测到,而不是"redcircle2(Clone)"
.
推荐阅读
- arrays - 检查数组中的空值
- python - python和c ++之间的推理结果不同
- node.js - Heroku 成功崩溃
- c++ - 如何禁用 doxygen 中基类的文档生成?
- filter - 通过选择表格列过滤 Tableau 仪表板
- python - 使用正则表达式在字符后拆分列表理解中的元素
- groovy - Jenkins 管道中的 Groovy 字符串比较
- sql - sql server - 如何将值并排放在结果中
- android - 如何禁用标记的 TITLE 点击事件?
- javascript - Firebase 函数 Google Analytics 触发器未针对 Web 事件触发