Raycast命中错误

时间:2017-04-17 23:08:07

标签: 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);

    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);
    }
}

1 个答案:

答案 0 :(得分:3)

您在该通话中缺少out个关键字

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

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