Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections;
- public class ufoController : MonoBehaviour {
- public Transform mainUFO;
- public float sensitivity;
- public float speed;
- public float smoothness = 0.3f;
- public float bobSmoothness = 0.4f;
- public Transform originalPos;
- public Transform targetForward;
- public Transform targetBackwards;
- public Transform targetLeft;
- public Transform targetRight;
- public Transform targetUp;
- public Transform targetDown;
- public Vector3 priVelocity;
- Rigidbody rb;
- Animation anim;
- void Start ()
- {
- rb = GetComponent<Rigidbody>();
- anim = mainUFO.GetComponent<Animation>();
- }
- void FixedUpdate ()
- {
- //Movement
- float xPos = Input.GetAxisRaw("Horizontal");
- float zPos = Input.GetAxisRaw("Vertical");
- Vector3 xMov = Camera.main.transform.right * xPos;
- Vector3 zMov = Camera.main.transform.forward * zPos;
- priVelocity = (xMov + zMov).normalized * speed;
- if (priVelocity != Vector3.zero)
- {
- rb.MovePosition(rb.position + priVelocity * Time.deltaTime);
- anim["Idle"].wrapMode = WrapMode.Once;
- anim.PlayQueued("Nothing");
- anim.Stop("Nothing");
- } else
- {
- anim["Idle"].wrapMode = WrapMode.Default;
- StartCoroutine(delayIdle());
- }
- //Camera
- float yRot = Input.GetAxisRaw("Mouse X");
- Vector3 vectorY = new Vector3(0, 0, yRot) * sensitivity;
- rb.MoveRotation(rb.rotation * Quaternion.Euler(vectorY));
- //More movement
- Vector3 vel = Vector3.zero;
- if (Input.GetKey(KeyCode.W))
- {
- Vector3 targetPosForward = new Vector3(targetForward.transform.position.x, targetForward.transform.position.y, targetForward.transform.position.z);
- mainUFO.transform.position = Vector3.SmoothDamp(mainUFO.transform.position, targetPosForward, ref vel, smoothness);
- } else
- {
- Vector3 originalPosPos = new Vector3(originalPos.transform.position.x, originalPos.transform.position.y, originalPos.transform.position.z);
- mainUFO.transform.position = Vector3.SmoothDamp(mainUFO.transform.position, originalPosPos, ref vel, smoothness);
- }
- if (Input.GetKey(KeyCode.S))
- {
- Vector3 targetPosBackwards = new Vector3(targetBackwards.transform.position.x, targetBackwards.transform.position.y, targetBackwards.transform.position.z);
- mainUFO.transform.position = Vector3.SmoothDamp(mainUFO.transform.position, targetPosBackwards, ref vel, smoothness);
- }
- else
- {
- Vector3 originalPosPos = new Vector3(originalPos.transform.position.x, originalPos.transform.position.y, originalPos.transform.position.z);
- mainUFO.transform.position = Vector3.SmoothDamp(mainUFO.transform.position, originalPosPos, ref vel, smoothness);
- }
- //Bobbing
- float bobX = Input.GetAxisRaw("Mouse X");
- float bobY = -Input.GetAxisRaw("Mouse Y");
- if (bobX < 0)
- {
- //left
- Vector3 targetPosLeft = new Vector3(targetLeft.transform.position.x, targetLeft.transform.position.y, targetLeft.transform.position.z);
- mainUFO.transform.position = Vector3.SmoothDamp(mainUFO.transform.position, targetPosLeft, ref vel, bobSmoothness);
- } else if (bobX > 0)
- {
- //right
- Vector3 targetPosRight = new Vector3(targetRight.transform.position.x, targetRight.transform.position.y, targetRight.transform.position.z);
- mainUFO.transform.position = Vector3.SmoothDamp(mainUFO.transform.position, targetPosRight, ref vel, bobSmoothness);
- }
- if (bobY < 0)
- {
- //up
- Vector3 targetPosUp = new Vector3(targetUp.transform.position.x, targetUp.transform.position.y, targetUp.transform.position.z);
- mainUFO.transform.position = Vector3.SmoothDamp(mainUFO.transform.position, targetPosUp, ref vel, bobSmoothness);
- }
- else if (bobY > 0)
- {
- //down
- Vector3 targetPosDown = new Vector3(targetDown.transform.position.x, targetDown.transform.position.y, targetDown.transform.position.z);
- mainUFO.transform.position = Vector3.SmoothDamp(mainUFO.transform.position, targetPosDown, ref vel, bobSmoothness);
- }
- }
- IEnumerator delayIdle ()
- {
- yield return new WaitForSeconds(1.5f);
- if (priVelocity == Vector3.zero)
- {
- anim.Play("Idle");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment