我正在尝试生成一个脚本,该脚本将检查十字线是否指向交互式对象,然后当按下键时,该对象将移至另一个位置,但是我似乎找不到一个没有该功能的函数。在我的情况下出现错误,这是我当前的代码:
public class Filingcabinetopen : MonoBehaviour {
public GameObject draw;
public GameObject Camera;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Physics.Raycast(Camera.transform.position, Vector3.forward, (float)2))
{
if (draw.Equals(RaycastHit.transform.gameObject))
{
// This is where my logic for the interaction will go but as of right now the selection statement doesn't work.
}
}
}
}
我对c#几乎一无所知,这是我第一次使用它,我决定承担艰巨的任务,所以请帮助:)
我尝试使用几种不同的方法,但是我似乎无法从被射线击中的物体中获得游戏物体或标签。 我使用过的另一个示例是:
if (Physics.Raycast(Camera.transform.position, Vector3.forward, (float)2))
{
RaycastHit RayObj;
if (draw.Equals(RayObj))
{
//
}
}
答案 0 :(得分:1)
您可以通过多种方式进行操作。
1:您可以使用Unity的图层系统。 -在图层旁边(在标签旁边的右上角)标记您要进行射线广播的对象
LayerMask _myLayer = LayerMask.GetMask("the name of your layer");
if (Physics.Raycast(Camera.transform.position, Vector3.forward, (float)2), _myLayer)
或者您也可以使用hit.collider.gameObject.name
(或标签或其他任何东西)获取刚刚命中的游戏对象的名称