Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class GridMovement : MonoBehaviour
- {
- public float moveDelay;
- public float restOfDelay;
- public Vector3 targetPos;
- public Vector3 targetRot;
- bool moving = false;
- private void Update()
- {
- if (!moving)
- {
- if (Input.GetKey(KeyCode.W))
- {
- targetPos = transform.position + (transform.forward * 3);
- StartCoroutine(Move());
- }
- else if (Input.GetKey(KeyCode.S))
- {
- targetPos = transform.position + (transform.forward * -3);
- StartCoroutine(Move());
- }
- else if (Input.GetKey(KeyCode.A))
- {
- // Rotation
- targetRot = transform.localEulerAngles;
- targetRot.y -= 90f;
- Debug.Log(targetRot);
- StartCoroutine(Rotating());
- }
- else if (Input.GetKey(KeyCode.D))
- {
- // Rotation
- targetRot = transform.localEulerAngles;
- targetRot.y += 90f;
- StartCoroutine(Rotating());
- }
- }
- }
- IEnumerator Move()
- {
- moving = true;
- float currTimer = 0;
- float delayPercentage = currTimer / moveDelay;
- Vector3 startPos = transform.position;
- targetPos.y = transform.position.y;
- while (currTimer < moveDelay)
- {
- currTimer += Time.deltaTime;
- delayPercentage = currTimer / moveDelay;
- transform.position = Vector3.Lerp(startPos, targetPos, delayPercentage);
- yield return null;
- }
- yield return new WaitForSeconds(restOfDelay);
- moving = false;
- }
- IEnumerator Rotating()
- {
- moving = true;
- float currTimer = 0;
- float delayPercentage = currTimer / moveDelay;
- Vector3 startRot = transform.localEulerAngles;
- while (currTimer < moveDelay)
- {
- currTimer += Time.deltaTime;
- delayPercentage = currTimer / moveDelay;
- transform.localEulerAngles = Vector3.Lerp(startRot, targetRot, delayPercentage);
- yield return null;
- }
- yield return new WaitForSeconds(restOfDelay);
- moving = false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement