我正在尝试生成一个脚本,它将检查十字准线是否指向一个交互式对象,然后当一个键被按下时,该对象将移动到另一个位置但是我似乎无法找到一个不会提起的功能我的情况出现错误是我当前的代码:
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))
{
//
}
}
有多种方法可以做到这一点。
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
(或标签或任何东西)获取刚刚击中的gameObject的名称