Advertisement
Guest User

Tile Base Movement

a guest
Nov 20th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.40 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class GridMovement : MonoBehaviour
  6. {
  7.     public float moveDelay;
  8.     public float restOfDelay;
  9.     public Vector3 targetPos;
  10.     public Vector3 targetRot;
  11.  
  12.     bool moving = false;
  13.  
  14.     private void Update()
  15.     {
  16.         if (!moving)
  17.         {
  18.             if (Input.GetKey(KeyCode.W))
  19.             {
  20.                 targetPos = transform.position + (transform.forward * 3);
  21.                 StartCoroutine(Move());
  22.             }
  23.             else if (Input.GetKey(KeyCode.S))
  24.             {
  25.                 targetPos = transform.position + (transform.forward * -3);
  26.                 StartCoroutine(Move());
  27.             }
  28.             else if (Input.GetKey(KeyCode.A))
  29.             {
  30.                 // Rotation
  31.                 targetRot = transform.localEulerAngles;
  32.                 targetRot.y -= 90f;
  33.                 Debug.Log(targetRot);
  34.                 StartCoroutine(Rotating());
  35.             }
  36.             else if (Input.GetKey(KeyCode.D))
  37.             {
  38.                 // Rotation
  39.                 targetRot = transform.localEulerAngles;
  40.                 targetRot.y += 90f;
  41.                 StartCoroutine(Rotating());
  42.             }
  43.         }
  44.     }
  45.  
  46.     IEnumerator Move()
  47.     {
  48.         moving = true;
  49.         float currTimer = 0;
  50.         float delayPercentage = currTimer / moveDelay;
  51.         Vector3 startPos = transform.position;
  52.  
  53.         targetPos.y = transform.position.y;
  54.  
  55.         while (currTimer < moveDelay)
  56.         {
  57.             currTimer += Time.deltaTime;
  58.             delayPercentage = currTimer / moveDelay;
  59.             transform.position = Vector3.Lerp(startPos, targetPos, delayPercentage);
  60.             yield return null;
  61.         }
  62.  
  63.         yield return new WaitForSeconds(restOfDelay);
  64.         moving = false;
  65.     }
  66.  
  67.     IEnumerator Rotating()
  68.     {
  69.         moving = true;
  70.         float currTimer = 0;
  71.         float delayPercentage = currTimer / moveDelay;
  72.         Vector3 startRot = transform.localEulerAngles;
  73.  
  74.         while (currTimer < moveDelay)
  75.         {
  76.             currTimer += Time.deltaTime;
  77.             delayPercentage = currTimer / moveDelay;
  78.             transform.localEulerAngles = Vector3.Lerp(startRot, targetRot, delayPercentage);
  79.             yield return null;
  80.         }
  81.  
  82.         yield return new WaitForSeconds(restOfDelay);
  83.         moving = false;
  84.     }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement