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(); } }
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(); }
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>(); } }