Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private IEnumerator SmoothMove(TileController tile, TileController.MoveDirection direction) {
- Quaternion startRotation = VisiualGridObject.rotation;
- Quaternion targetRotation = VisiualGridObject.rotation;
- switch (direction.Value) {
- case TileController.MoveDirection.Direction.Left: {
- targetRotation = Quaternion.LookRotation(Vector3.forward, Vector3.left);
- break;
- }
- case TileController.MoveDirection.Direction.Up: {
- targetRotation = Quaternion.LookRotation(Vector3.down, Vector3.forward);
- break;
- }
- case TileController.MoveDirection.Direction.Right: {
- targetRotation = Quaternion.LookRotation(Vector3.forward, Vector3.right);
- break;
- }
- case TileController.MoveDirection.Direction.Down: {
- targetRotation = Quaternion.LookRotation(Vector3.up, Vector3.back);
- break;
- }
- }
- Vector3 startPosition = transform.position;
- Vector3 targetPosition = tile.transform.position + Vector3.up * transform.localScale.x;
- GridPosition = tile.GridPosition;
- tile.CurrentObject = this;
- float timer = 0.2f;
- CanMove = false;
- AnimationCurve curve = AnimationCurve.EaseInOut(0,0,1,0);
- curve.AddKey(new Keyframe(0.5f, 1));
- while (timer > 0) {
- VisiualGridObject.rotation = Quaternion.Lerp(startRotation, targetRotation, (0.2f - timer) * 5);
- transform.position = Vector3.Lerp(startPosition, targetPosition, (0.2f - timer) * 5);
- timer -= Time.deltaTime * curve.Evaluate((0.2f - timer) * 5) + 0.01f;
- yield return null;
- }
- VisiualGridObject.rotation = Quaternion.identity;
- transform.position = targetPosition;
- CanMove = true;
- yield return null;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement