当我凝视一个物体时,我有这个命中信息。凝视的时候会出现这个物体,但是当看向远处时会消失。我希望对象在看完之后显示10秒。我在正确的道路上吗?
float timeLeft = 10.0f;
timeLeft -= Time.deltaTime;
if (Hit == InfoCube)
{
GameObject.Find("GUIv2").transform.localScale = new Vector3(0.02f, 0.2f, 0.8f) // Shows object
}
else if (timeLeft < 0)
{
GameObject.Find("GUIv2").transform.localScale = new Vector3(0, 0, 0);
GameObject.Find("GUIv2").SetActive(false);
}
答案 0 :(得分:1)
此代码放在哪里?我假设它在Update()方法中。
无论如何,我可以看到代码存在一些问题。以下是我的建议:
timeLeft
变量。它永远不会达到0。这里有一些示例代码可以实现您正在寻找的内容:
float timeLeft = 10f;
bool isGazed;
GameObject GUIv2;
void Start()
{
GUIv2 = GameObject.Find("GUIv2");
}
void Update()
{
if (Hit == InfoCube)
{
if (!isGazed)
{
// first frame where gaze was detected.
isGazed = true;
GUIv2.SetActive(true);
}
// Gaze on object.
return;
}
if (Hit != InfoCube && isGazed)
{
// first frame where gaze was lost.
isGazed = false;
timeLeft = 10f;
return;
}
timeLeft -= Time.deltaTime;
if (timeLeft < 0)
{
GUIv2.SetActive(false);
}
}