Unity raycast可能的错误?

时间:2018-07-20 10:00:45

标签: c# unity3d

这是我在学校项目游戏中进行光线投射的代码。如果我将脚本放在对象上,那么一切都很好。但是,如果我关闭Unity并重新打开项目,则“ jakDaleko” = distance的值将保持锁定在1129.395,而不是更改每个帧。

我应该更改什么,这样它才能每次都起作用,而不仅仅是第一次按下播放按钮。

这是我的代码。

脚本1 = raycast


public class SmerDivani : MonoBehaviour {

public static float VzdalenostOdCile;
public float VzdalenostOdCileInterni;


// Update is called once per frame
void Update() {    
    RaycastHit Hit;
    if (Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), out Hit)) { 
        VzdalenostOdCileInterni = Hit.distance;
        VzdalenostOdCile = VzdalenostOdCileInterni;
    }
}

}

第二个脚本


public class TabuleMesto1 : MonoBehaviour
{

public float JakDaleko;
public GameObject AkceTlacitko;
public GameObject AkceText;
public GameObject UIQuest;
public GameObject ThePlayer;
public GameObject NoticeCam;

void Update() {
    JakDaleko = SmerDivani.VzdalenostOdCile;
}

void OnMouseOver() {
    if (JakDaleko <= 5) {
        AkceTlacitko.SetActive(true);
        AkceText.SetActive(true);
    }

    if (JakDaleko > 5)
    {
        AkceTlacitko.SetActive(false);
        AkceText.SetActive(false);
    }

    if (Input.GetButtonDown("Akce")) {
        if (JakDaleko <= 5) {
            AkceTlacitko.SetActive(false);
            AkceText.SetActive(false);
            UIQuest.SetActive(true);
            NoticeCam.SetActive(true);
            ThePlayer.SetActive(false);
        }
    }
}

void OnMouseExit() { 
    AkceTlacitko.SetActive(false);
    AkceText.SetActive(false);
}


}

2 个答案:

答案 0 :(得分:1)

我不太确定您要达到什么目标?也许这应该可以“解决”您的问题,如果光线投射未命中,您并没有清除距离。...

void Update() {   

    RaycastHit Hit;
    if (Physics.Raycast(transform.position, transform.forward, out Hit)) { 
        VzdalenostOdCileInterni = Hit.distance;   
    }
    else {
        VzdalenostOdCileInterni = 0.0f;
    }
    VzdalenostOdCile = VzdalenostOdCileInterni;
}

另外,我认为您应该使用transform.forward而不是transform.TransformDirection(Vector3.forward)

答案 1 :(得分:0)

我认为最大的问题是文件名。由于某种原因,包括我的愚蠢在内,解决方案是将脚本从table1重命名为table_1