/* * IEnumerator ExpulsionAlien() * { * SetMovementState(AlienMovementState.Expulsion); * currentClickableExpulsion = currentClickable; * RectTransform rt = GetComponent<RectTransform>(); * Vector2 targetPosition = library.map.GetExpulsionTargetPosition(this, currentClickable); * SetIgnoreWallClickable(currentClickable); * * while (Vector2.Distance(rt.position, targetPosition) > 1f) * { * while (pauseInCupol || pauseInBlackHole) * yield return null; * * rt.position = Vector2.Lerp(rt.position, targetPosition, Time.deltaTime * 5); * * yield return null; * } * currentClickableExpulsion = null; * SetMovementState(AlienMovementState.Free); * }*/ /* * IEnumerator PusherExpulsionAlienCoroutine() * { * SetMovementState(AlienMovementState.Expulsion); * currentClickableExpulsion = currentClickable; * currentFountainTarget = null; * * RectTransform rt = GetComponent<RectTransform>(); * Vector2 targetPosition = library.map.GetPusherExpulsionTargetPosition(this, currentClickable); * * while (Vector2.Distance(rt.position, targetPosition) > 3f) * { * while (pauseInCupol || pauseInBlackHole) * yield return null; * * rt.position = Vector2.Lerp(rt.position, targetPosition, Time.deltaTime * GameplayConstants.ExpulsionAlienSpeed); * * yield return null; * } * currentClickableExpulsion = null; * SetMovementState(AlienMovementState.Free); * }*/ /* * public void PusherExpulsionAlien() * { * if (currentMovableCoroutine != null) * StopCoroutine(currentMovableCoroutine); * * if (currentWaitCoroutine != null) * StopCoroutine(currentWaitCoroutine); * * StartCoroutine(PusherExpulsionAlienCoroutine()); * } */ IEnumerator MoveToCoroutine(Clickable clickable) { RectTransform rt = GetComponent <RectTransform>(); // RectTransform targetRt = null; // targetRt = clickable.GetComponent<RectTransform>(); bool isFinalTarget = false; if (wayQueue.Count == 0) { isFinalTarget = true; SetMovementState(AlienMovementState.MoveToPoint); } else { SetMovementState(AlienMovementState.MoveToJump); } Vector2 targetPosition = clickable.GetLocalPosition(isFinalTarget) /*- library.canvas.scaleFactor * new Vector3(0, DeltaHeight, 0)*/; while (Vector2.Distance(rt.anchoredPosition, targetPosition) > 1f) { while (pauseInCupol || pauseInBlackHole) { yield return(null); } Vector2 tempPosition = Vector2.MoveTowards(rt.anchoredPosition, targetPosition, Time.deltaTime * speed); /* * if (currentClickable.IsWall() && AlienInWall(tempPosition)) * { * * ////После столкновения со стеной на пару секунд надо забыть о фонтане. * // SetLastTarget(currentClickable); * SetIgnoreFountainClickable(currentFountainTarget); * currentFountainTarget = null; * // isFoundFountain = false; * currentMovementState = AlienMovementState.Free; * StopAllCoroutines(); * } * else*/ rt.anchoredPosition = tempPosition; yield return(null); } // rt.position = targetPosition; // SetLastTarget(clickable); if (currentMovementState.Equals(AlienMovementState.MoveToJump)) { readyToJump = true; } MoveToTarget(); }