Unity:Raycast 未检测到父对象的标签
Posted
技术标签:
【中文标题】Unity:Raycast 未检测到父对象的标签【英文标题】:Unity: Raycast not detecting parent object's tag 【发布时间】:2021-07-20 15:17:54 【问题描述】:我试图检测玩家何时想要打开/关闭一扇门,因此我创建了一个名为 Door Hinge 的 emptyObject,它的标签为 "Door "。然后我创建了一个名为 Door Body 的 cube 对象,它是 Door Hinge 的子对象,并且没有给它标签,但确实给了它一层 忽略光线投射。我将父级的缩放设置为 (1, 1, 1) 但确实稍微改变了子级的缩放以及它的 x 位置。
我不知道为什么,但是光线投射似乎只检测到子立方体而不是父空对象。如果我遗漏了什么或做错了什么,谁能告诉我?我将在下面添加我的检测代码。
void CheckInteraction()
// origin starts from the camera
Vector3 origin = cam.transform.position;
// direction of the camera
Vector3 direction = cam.transform.forward;
// The distance for the raycast
float distance = 4f;
// Used to store info about the object that the raycast hits
RaycastHit hit;
if (Physics.Raycast(origin, direction, out hit, distance))
Debug.Log(hit.transform.tag);
if (hit.transform.tag == "Door")
Debug.Log("HIT");
if (Input.GetKeyDown(KeyCode.E))
hit.transform.gameObject.GetComponent<DoorOpen>().enabled = true;
【问题讨论】:
你的父游戏对象有碰撞器吗? 不...我现在感觉很愚蠢,哈哈,我还是 Unity 的新手,这是我第一次尝试使用 Raycasting。感谢您的评论,这就是我所缺少的! 【参考方案1】:我缺少的解决方案是父空对象需要添加一个盒子碰撞器。
【讨论】:
以上是关于Unity:Raycast 未检测到父对象的标签的主要内容,如果未能解决你的问题,请参考以下文章
Unity Physics.Raycast 似乎无法正确检测到它击中的对象
带有 LayerMask 的 Unity Physics.Raycast 不会检测图层上的对象。使用了位移,尝试了反相层,仍然没有任何效果