Esempio n. 1
0
    private void Update()
    {
        foreach (LevelDimension dimension in m_Dimensions)
        {
            if (Input.GetKeyDown(dimension.m_SwapHereKey) && dimension != m_ActiveDimension)
            {
                if (m_ActiveDimension.SwapCharacters(dimension))
                {
                    m_ActiveDimension = dimension;
                    break;
                }
                else
                {
                    // Can't swap due to blocked location on one end
                    // Play a warning sound or something
                    Debug.Log("Can't swap, something is blocked");
                }
            }
        }

        if (!m_ActiveDimension.ContainsCharacter())
        {
            // Player has left playable area; game over
            GameManager.Instance.GameOver();
        }
    }
Esempio n. 2
0
    public bool SwapCharacters(LevelDimension other)
    {
        BoxCollider2D collider      = m_Character.GetComponent <BoxCollider2D>();
        Collider2D    overlap       = Physics2D.OverlapBox(m_Character.position, collider.size * 0.95f, 0, m_GroundLayer);
        BoxCollider2D otherCollider = other.m_Character.GetComponent <BoxCollider2D>();
        Collider2D    otherOverlap  = Physics2D.OverlapBox(other.m_Character.position, otherCollider.size * 0.95f, 0, m_GroundLayer);

        if (overlap != null || otherOverlap != null)
        {
            // One of the two characters is inside a wall, so don't swap
            return(false);
        }

        // Swap character positions
        Vector2 otherPosition = other.m_Character.transform.position;

        other.m_Character.transform.position = m_Character.transform.position;
        m_Character.transform.position       = otherPosition;

        // Swap character transform parents
        other.m_Character.transform.parent = transform;
        m_Character.transform.parent       = other.transform;

        // Toggle camera effects on/off if new character is the player
        other.m_CameraEffect.enabled = m_Character.GetComponent <PlayerController>() == null;
        m_CameraEffect.enabled       = other.m_Character.GetComponent <PlayerController>() == null;

        // Swap character references
        Rigidbody2D otherCharacter = other.m_Character;

        other.m_Character = m_Character;
        m_Character       = otherCharacter;

        return(true);
    }
Esempio n. 3
0
 private void Start()
 {
     foreach (LevelDimension dimension in m_Dimensions)
     {
         if (dimension.m_Character.GetComponent <PlayerController>() != null)
         {
             m_ActiveDimension = dimension;
             break;
         }
     }
 }