我基本上只想和NPC交谈。按下MouseButton(0)
后,该文本应会显示。使用我当前的代码,只要按住鼠标按钮,文本就不会消失。
if (Input.GetMouseButton(0) && Input.GetMouseButton(0) && cc.height < 20 && Vector3.Distance(Larry.transform.position, this.transform.position) < 10)
{
text1.SetActive(true);
如果我想在Vector3.Distance(Larry.transform.position, this.transform.position) < 10
不再为真之前查看文本,该if语句应该如何?
答案 0 :(得分:2)
假设将代码块放置在例如Update
在每一帧都被称为,您只需要使文本保持启用状态,直到您匹配相反的条件为止
使用Input.GetMouseButtonDown(在按下鼠标按钮时仅在开始时触发一次)而不是Input.GetMouseButton
(在按住鼠标按钮时每帧重复触发)也仅使用一个呼叫就足够了用于启用文本,因为它将“自动”保持启用状态。
if (Input.GetMouseButtonDown(0) && cc.height < 20 && Vector3.Distance(Larry.transform.position, transform.position) < 10)
{
// Enable the text
text1.SetActive(true);
}
// Meanwhile the second condiction isn't matched
// the text stays active anyway
// Use if else to avoid an unnecessary check
// since only one of the two conditions can be true at the same time
else if(Vector3.Distance(Larry.transform.position, transform.position) >= 10)
{
// Disable the text
text1.SetActive(false);
}
答案 1 :(得分:1)
您只需要做同样的事情,但是像这样Vector3.Distance<10
的相反:
if(Vector3.Distance(Larry.transform.position, this.transform.position) => 10)
text1.SetActive(false);
哦,您有一个多余的Input.GetMouseButton(0)
,我相信只打一次就足够了。