C# 光线投射命中错误

C# 光线投射命中错误,c#,unity3d,scripting,raycasting,C#,Unity3d,Scripting,Raycasting,我有一个问题,当我写这篇文章来播放一个声音时,播放机在距离4单位米以下并按下“e”,但它给了我一个错误,hit无法转换为float。我现在该怎么办 public AudioSource sound; public int rayLength = 4; public GameObject doorText; RaycastHit hit; void Update() { var fwd = transform.TransformDirection(Vector3.forward);

我有一个问题,当我写这篇文章来播放一个声音时,播放机在距离4单位米以下并按下“e”,但它给了我一个错误,
hit
无法转换为
float
。我现在该怎么办

public AudioSource sound;

public int rayLength = 4;
public GameObject doorText;
RaycastHit hit;

void Update()
{
    var fwd = transform.TransformDirection(Vector3.forward);

    if (Physics.Raycast(transform.position, fwd, hit, rayLength))
    {
        if (hit.collider.gameObject.tag == "Boxen")
        {
            doorText.gameObject.SetActive(true);
            if (Input.GetKeyDown("e")) //or Input.GetKeyDown("e")    Input.GetButtonDown("Fire1")
            {
                sound.Play();
            }
        }
    }

    else
    {
        doorText.gameObject.SetActive(false);
    }
}

您在该呼叫中缺少一个
out
关键字

if (Physics.Raycast(transform.position, fwd, out hit, rayLength)) {

它允许方法写入
hit
参数。如果没有它,C#将无法识别所需的重载并将您指向最接近的可用重载,在这种情况下,第三个参数是float。

您在该调用中缺少一个
out
关键字

if (Physics.Raycast(transform.position, fwd, out hit, rayLength)) {
它允许方法写入
hit
参数。如果没有它,C#将无法识别所需的重载并将您指向最接近的可用重载,在本例中,第三个参数是float