Esempio n. 1
0
    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();
        }
    }
Esempio n. 2
0
    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;
    }