コード例 #1
0
    void TargetRoom()
    {
        m_stayingPut = false;
        foreach (var availableRoom in m_currentRoom.m_connectedRooms)
        {
            i++;

            if (m_targetRoom == null && availableRoom.m_room != m_previousRoom && availableRoom.m_door.locked == false)
            {
                m_targetRoom = availableRoom.m_room;
            }

            if (m_targetRoom != null)
            {
                if (availableRoom.m_room.m_temperature >= m_targetRoom.m_temperature && availableRoom.m_room != m_previousRoom && availableRoom.m_door.locked == false)
                {
                    m_targetRoom = availableRoom.m_room;
                    x            = i;
                }
            }
        }

        if (m_targetRoom == null)
        {
            StayPut();
        }

        m_seekingDoor = true;
    }
コード例 #2
0
 void SetRoom()
 {
     m_seekingRoom   = false;
     m_previousRoom  = m_currentRoom;
     m_currentRoom   = m_targetRoom;
     m_previousTimer = 10.0f;
     m_waitTimer     = m_waitTime;
     m_waiting       = true;
     m_targetRoom    = null;
     i = -1;
 }
コード例 #3
0
    private void Update()
    {
        m_previousTimer -= Time.deltaTime;

        if (m_previousTimer <= 0.0f)
        {
            m_previousRoom  = null;
            m_previousTimer = 10f;
        }

        if (m_waiting)
        {
            m_waitTimer -= Time.deltaTime;

            if (m_waitTimer <= 0.0f)
            {
                TargetRoom();
                m_waiting = false;
            }
        }

        if (m_seekingDoor)
        {
            transform.position = Vector3.MoveTowards(transform.position, m_currentRoom.m_connectedRooms[x].m_door.transform.position, Time.deltaTime * m_speed);

            if (Vector3.Distance(transform.position, m_currentRoom.m_connectedRooms[x].m_door.transform.position) <= 0.05f)
            {
                m_seekingDoor = false;
                m_seekingRoom = true;
            }
        }


        if (m_seekingRoom)
        {
            transform.position = Vector3.MoveTowards(transform.position, m_targetRoom.transform.position, Time.deltaTime * m_speed);

            if (Vector3.Distance(transform.position, m_targetRoom.transform.position) <= 0.05f)
            {
                SetRoom();
            }
        }
    }
コード例 #4
0
 void StayPut()
 {
     m_targetRoom = m_currentRoom;
     m_stayingPut = true;
 }