这是我在学校项目游戏中进行光线投射的代码。如果我将脚本放在对象上,那么一切都很好。但是,如果我关闭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);
}
}
答案 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