private void MoveNpc() { if (moveRoad.Count == 0) { return; } if ((tr.position - curRoad.pos).sqrMagnitude <= Mathf.Epsilon) { moveRoad.Pop(); // 도착 했을 때 행동들 (대기, 구입 대기, 돌아감) if (moveRoad.Count == 0) { ChangeDirection(NPC_DIRECTION.IDLE); if (IsWait) { GameManager.Instance.WaitQueue.Enqueue(waitFunc); } else { if (IsBuy || curRoad.node == GameManager.Instance.NpcStart) { StartCoroutine(DisappearCoroutine()); } else { mCondition = PopupHandler(this); if (mCondition) { mCondition.guestDoHandler += ShopOut; } mAudio.Stop(); } } return; } curRoad = moveRoad.Peek(); ChangeDirection(curRoad.dir); } tr.position = Vector3.MoveTowards(tr.position, curRoad.pos, moveSpeed * Time.deltaTime); if (!mAudio.isPlaying) { mAudio.clip = mWalkClip[soundId]; soundId++; if (soundId >= mWalkClip.Length) { soundId = 0; } mAudio.Play(); } }
private void FindMoveRoad(Node _Start, Node _End) { List <Node> tRoad = PathFinder.PathFinding(_Start, _End); moveRoad.Clear(); for (int i = 0; i < tRoad.Count; i++) { MOVE_ROAD temp = new MOVE_ROAD(tRoad[i]); moveRoad.Push(temp); tRoad[i].ResetNode(); } curRoad = moveRoad.Peek(); ChangeDirection(curRoad.dir); mRenderer.sprite = Info.SpriteInfo[direction][spriteId]; tr.position = curRoad.pos; }