我需要检查用户点击了哪个对象(游戏片段)......但问题是if else块似乎没有检测到鼠标按钮单击。如果我删除' Input.GetMouseButtonDown(0)'来自else if条件它的工作原理。这是我的代码:
void Update () {
if (chance == 1) {
if (Input.GetKeyUp (KeyCode.Space)) {
if (enableInput == true) {
enableInput = false;
markers [0].gameObject.SetActive (true);
markers [1].gameObject.SetActive (false);
markers [2].gameObject.SetActive (false);
markers [3].gameObject.SetActive (false);
a.PlayOneShot (s_Dice);
DiceRoll ();
if (subPlayer == 4 && diceno == 6) {
Vector3 temp;
Vector3 currentPos;
subPlayer -= 1;//3
temp = transform.position;
subplayers1 [0].transform.position = new Vector3 (startingpos1.transform.position.x, -1.8f, startingpos1.transform.position.z);
Invoke ("waitandgo",0.5f);
} else if (Input.GetMouseButtonDown(0) && subPlayer == 3 && diceno == 6) {
//print ("clicked");
//ray = Camera.main.ScreenPointToRay (Input.mousePosition);
//if (Physics.Raycast (ray, out hit)) {
print("Click");
}
}
}
}
}
答案 0 :(得分:2)
Input.GetKeyUp()
,Input.GetMouseButtonDown()
等仅在事件发生时对单帧保持为真。在您的代码中,如果您没有在确切的框架中释放空间,则单击鼠标按钮(几乎总是如此),这两个条件永远不会同时满足,您永远不会输入{{1案件。
你想要的是当空间被释放时,确定是否需要玩家的鼠标输入,然后从那一点开始监听鼠标点击。这样,您不仅限于释放空间并同时单击鼠标的单帧窗口。
你需要另外一个变量来存储你是否在等待从播放器点击鼠标 - 如果你需要从播放器中选择,只需将标志设置为true,所以在空间释放后的任何时候你都可以点击鼠标:
else if
注意:我没有在这里添加它,但是您应该进行一些条件检查,以确保在没有接收到该玩家输入的情况下不会向前移动游戏。确保您执行正确的游戏顺序!
希望这有帮助!如果您有任何问题,请告诉我。