Beispiel #1
0
    private IEnumerator WalkAction(Direction d)
    {
        var startPosition = transform.position;
        var position      = transform.position + (Vector3)d.Value;

        anim.SetBool("Moving", true);
        stretchDirection = d.Value;

        float t = 0f;

        while (t < ActionTime)
        {
            transform.position = Vector2.Lerp(startPosition, position, t / ActionTime);
            t += Time.deltaTime;
            yield return(null);
        }
        transform.position = position;
        if (!IsDupe)
        {
            var tile = Physics2D.OverlapBox(this.transform.position, Vector2.one * 0.9f, 0, RealTileMask);
            if (tile != null)
            {
                CurrentTile = tile.GetComponent <RealTile>();
            }
            anim.SetBool("Moving", false);
            stretchDirection = Vector2.up;
            DestroyDupe();
        }
    }
Beispiel #2
0
    public void Reset()
    {
        transform.position      = originalPosition;
        transform.rotation      = originalRotation;
        sr.transform.localScale = originalScale;

        stretchAmount    = 0f;
        stretchDirection = Vector2.up;
        anim.SetBool("Moving", false);
        anim.SetBool("Grabbing", false);

        CurrentTile = Physics2D.OverlapBox(originalPosition, Vector2.one * 0.9f, 0, RealTileMask).GetComponent <RealTile>();

        if (HasKey)
        {
            miniKeyActual = 0f;
            Grabbable.Reset();
            Grabbable     = null;
            miniKey.color = Color.clear;
        }

        if (activeRoutine != null)
        {
            StopCoroutine(activeRoutine);
        }

        DestroyDupe();
    }
Beispiel #3
0
    public void Start()
    {
        miniKey = GetComponentsInChildren <SpriteRenderer>().FirstOrDefault(k => k.gameObject != sr.gameObject);
        sr.transform.localScale = Vector3.one;

        originalPosition = transform.position;
        originalRotation = transform.rotation;
        originalScale    = sr.transform.localScale;

        if (!IsDupe)
        {
            audioSource = GetComponent <AudioSource>();
            anim        = GetComponent <Animator>();
            GameManager.Instance.LevelManager.Player = this;
            CurrentTile = Physics2D.OverlapBox(this.transform.position, Vector2.one * 0.9f, 0, RealTileMask).GetComponent <RealTile>();
        }
    }