我有一個 Unity Slidepuzzle 游戲(4x4),我檢查開放區域要移動到哪里。我嘗試使用 MoveTowards 制作幻燈片動畫,效果很好,但現在我遇到的問題是,當我單擊開放空間旁邊的兩塊(快速)時,兩者都會移入其中,因為該塊不完全在那里,因此光線無法移動打任何東西。PS:它可以在沒有動畫的情況下工作,但我只是不希望這些碎片只是傳送。我想要一個平滑的幻燈片。我嘗試用布爾值解決它,這樣當我單擊它時,移動設置為 true,當動畫完成時再次設置為 false,但這不起作用。void MovePuzzle() { float duration = 0.5f; if(go_left) { Vector3 endPos1 = new Vector3(transform.position.x - move_amount.x, transform.position.y, transform.position.z); StartCoroutine(MoveTowards(endPos1, duration)); go_left = false; moved = true; } if (go_right) { Vector3 endPos2 = new Vector3(transform.position.x + move_amount.x, transform.position.y, transform.position.z); StartCoroutine(MoveTowards(endPos2, duration)); go_right = false; moved = true; } if (go_up) { Vector3 endPos3 = new Vector3(transform.position.x, transform.position.y + move_amount.y, transform.position.z); StartCoroutine(MoveTowards(endPos3, duration)); go_up = false; moved = true; } if (go_down) { Vector3 endPos4 = new Vector3(transform.position.x, transform.position.y - move_amount.y, transform.position.z); StartCoroutine(MoveTowards(endPos4, duration)); go_down = false; moved = true; } } IEnumerator MoveTowards(Vector3 toPosition, float duration) { float counter = 0; while (counter < duration) { counter += Time.deltaTime; Vector3 currentPos = transform.position; float time = Vector3.Distance(currentPos, toPosition) / (duration - counter) * Time.deltaTime; transform.position = Vector3.MoveTowards(currentPos, toPosition, time); Debug.Log(counter + " / " + duration); yield return null; } }在幻燈片動畫完成之前是否有辦法限制點擊?我對 Unity 還比較陌生,所以不要指望我能提供太多知識 :D。
1 回答

白豬掌柜的
TA貢獻1893條經驗 獲得超10個贊
你說你用布爾值嘗試過,但沒有成功。我認為如果做得正確,它應該有效。
在 MovePuzzle() 的第一行中寫入:
if (moved) { return; }
然后,在 while 塊之后(因此在其外部),寫入:
moved = false;
那么您可能應該將其重命名為 isMoving 。
- 1 回答
- 0 關注
- 142 瀏覽
添加回答
舉報
0/150
提交
取消