Пример #1
0
    public override void Interact(GameObject source)
    {
        base.Interact(source);
        CharacterMover player = source.GetComponent <CharacterMover>();

        if (m_wanderingNPC != null && player != null)
        {
            m_wanderingNPC.StopMoving();
            // FIXME: Remember to restore movement!
            m_wanderingNPC.FaceTo(player.FacingDirectionToVector(player.GetFacingDirection()) * -1);
        }
        UIDialogPanel.Instance.ShowText(m_message);
    }
Пример #2
0
    void MoveRandomly()
    {
        if (!m_shouldMove)
        {
            return;
        }
        FacingDirection targetFacingDirection = FacingDirection.South;
        int             randomChoice          = Random.Range(0, 4);

        if (randomChoice == 0 && !m_lockYAxis)
        {
            targetFacingDirection = FacingDirection.North;
        }
        if (randomChoice == 1 && !m_lockYAxis)
        {
            targetFacingDirection = FacingDirection.South;
        }
        if (randomChoice == 2 && !m_lockXAxis)
        {
            targetFacingDirection = FacingDirection.West;
        }
        if (randomChoice == 3 && !m_lockXAxis)
        {
            targetFacingDirection = FacingDirection.East;
        }

        Vector2 targetVector = m_characterMover.FacingDirectionToVector(targetFacingDirection);

        if (!m_characterMover.CanNPCMove(targetVector))
        {
            return;
        }
        m_characterMover.SetFacingDirection(targetFacingDirection);
        if (!SatisfiesMovementConstraints(targetVector))
        {
            return;
        }
        m_characterMover.StartMovingTowards(targetVector);
    }