unity3d - Raycast 穿过物体
问题描述
我的光线投射通过带有网格对撞机/盒式对撞机和图层的对象。
我似乎找不到解决方案。请帮我。
我尝试了不同的解决方案,但光线投射仍然穿过物体。即使是难以处理的物体后面的物体也被召唤出来。
public float maxRayDistance = 2.0f;
public LayerMask layerMask;
public GUISkin mySkin;
public bool showGui = false;
public RaycastHit hit;
void Update()
{
Vector3 dir = gameObject.transform.TransformDirection(Vector3.forward);
if (Physics.Raycast(transform.position, dir, out hit, maxRayDistance, layerMask))
{
showGui = true;
if (Input.GetButtonDown("Use"))
{
Invoke("SendAction", 0.3f);
}
}
else
{
showGui = false;
}
}
public void SendAction()
{
GameObject target = hit.collider.gameObject;
target.BroadcastMessage("Action");
}
解决方案
您需要检查 Collider (UnityEditor) 中的 IsTrigger 以使 Raycast 对您的对象起作用。如果这不起作用,您的项目中有一个关于 Raycast 的设置,您可能在物理设置中关闭了该设置。
推荐阅读
- java - 在 Android Gradle Plagin 中运行 gradle task JavaExec?
- data-structures - 是否有用于查找匹配任意范围的值的数据结构?
- android - 如何使用框制作文本输入布局?
- sql - 将电话号码与单元格中的字符串分开 - 随机顺序
- c - 如何将“-lm”(LDFLAGS)正确添加到此 Makefile?
- r - 在 eval_tidy 中访问错误变量的函数
- java - 使用 Intent.ACTION_VIEW 显示来自 FileProvider 的照片
- facebook - 有没有办法可以使用开放图形协议更改 Facebook 片段中显示的 URL?
- python - 已安装的库中缺少已编译的 cpython 文件
- javascript - 如何在使用 javascript api MVC 填充后将下拉菜单设为可选,因为它是强制性的