Пример #1
0
        private void UpdateTravel()
        {
            switch (travellingState)
            {
            case TravellingState.InRoom:
                Room room = roomnet.GetRoom(transform.position);
                if (room != null)
                {
                    currentRoom = room;
                    if (!currentRoom.isConnectedToStart)
                    {
                        state = State.Sleeping;
                        animator.SetBool("isSleeping", true);
                        sleepEmitter.enabled = true;
                        return;
                    }
                    path = roomnet.FindPath(currentRoom, targetRoom);
                    if (path == null)
                    {
                        state = State.Idle;
                        return;
                    }
                    currentTraverser = currentRoom.traverser;
                    if (targetRoom == currentRoom)
                    {
                        currentRoom.traverser.SetTarget(roomnet.WorldToRelativePos(currentRoom.center));
                        if (currentTraverser.Traverse(this))
                        {
                            state = State.Idle;
                        }
                    }
                    else
                    {
                        currentRoom.traverser.SetTarget(path[0]);
                        if (currentTraverser.Traverse(this))
                        {
                            travellingState = TravellingState.InLink;
                        }
                    }
                }
                break;

            case TravellingState.InLink:
                currentTraverser = path[0].traverser;
                path[0].traverser.SetTarget(currentRoom);

                if (currentTraverser.Traverse(this))
                {
                    travellingState = TravellingState.InRoom;
                }
                break;
            }
        }
Пример #2
0
 public void Recenter()
 {
     if (currentRoom == null)
     {
         return;
     }
     transform.position = currentRoom.center;
     if (state == State.Travelling && travellingState == TravellingState.InLink)
     {
         travellingState = TravellingState.InRoom;
     }
     if (transform.parent != roomnet.transform.parent)
     {
         transform.SetParent(roomnet.transform.parent, true);
     }
 }