Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections;
- public class NewMoveCamera : MonoBehaviour
- {
- //Public
- public int zoom = 40;
- public int normal = 60;
- public float smooth = 5;
- public float speed = 10;
- //Objets
- public GameObject player;
- public GameObject[] waypoints;
- //Private
- private int i;
- private Camera cam;
- private bool moving;
- private bool move = false;
- private Vector3 targetPos = Vector3.zero;
- private void Start()
- {
- i = 0;
- moving = false;
- cam = Camera.main;
- }
- private void Update()
- {
- Cursor.visible = false;
- if (Input.GetMouseButtonDown(0))
- {
- RaycastHit hit;
- Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
- if (Physics.Raycast(ray, out hit, 100f))
- {
- if (hit.transform != null)
- {
- Rigidbody rb;
- if (rb = hit.transform.GetComponent<Rigidbody>())
- {
- targetPos = hit.transform.position;
- if (moving == false && move == false)
- {
- switch (hit.transform.gameObject.name)
- {
- case ("Sphere"):
- i = 0;
- StartCoroutine(MoveToWaypoint(waypoints[0].transform.position, speed));
- break;
- case ("Sphere (1)"):
- i = 1;
- StartCoroutine(MoveToWaypoint(waypoints[1].transform.position, speed));
- break;
- case ("Sphere (2)"):
- i = 2;
- StartCoroutine(MoveToWaypoint(waypoints[2].transform.position, speed));
- break;
- case ("Sphere (3)"):
- i = 3;
- StartCoroutine(MoveToWaypoint(waypoints[3].transform.position, speed));
- break;
- case ("Sphere (4)"):
- i = 4;
- StartCoroutine(MoveToWaypoint(waypoints[4].transform.position, speed));
- break;
- }
- }
- move = true;
- }
- }
- }
- }
- if (move)
- {
- if (player.transform.position != targetPos)
- {
- player.transform.position = Vector3.Lerp(player.transform.position, targetPos, speed * Time.deltaTime);
- cam.fieldOfView = Mathf.Lerp(cam.fieldOfView, zoom, Time.deltaTime * smooth);
- }
- else
- {
- move = false;
- moving = false;
- cam.fieldOfView = Mathf.Lerp(cam.fieldOfView, zoom, Time.deltaTime * smooth);
- }
- }
- if ((Input.GetAxis("Mouse ScrollWheel") < 0) || (Input.GetKey(KeyCode.DownArrow)))
- {
- transform.Rotate(0, 0, 0);
- player.transform.position = new Vector3(0, 5.3f, 0);
- cam.fieldOfView = 60;
- move = false;
- moving = false;
- }
- if ((Input.GetAxis("Mouse ScrollWheel") > 0) || (Input.GetKey(KeyCode.UpArrow)) && !moving)
- {
- if (i >= waypoints.Length)
- {
- /*transform.Rotate(0, 0, 0);
- player.transform.position = new Vector3(0, 5.3f, 0);
- cam.fieldOfView = 60;
- move = false;
- moving = false;*/
- i = 0;
- }
- /*if (player.transform.position != waypoints[i].transform.position) {
- player.transform.position = Vector3.MoveTowards(player.transform.position, waypoints[i].transform.position, speed * Time.deltaTime);
- }*/
- StartCoroutine(MoveToWaypoint(waypoints[i++].transform.position, speed));
- }
- }
- private IEnumerator MoveToWaypoint(Vector3 target, float speed)
- {
- moving = true;
- float sT = speed * Time.deltaTime;
- while (player.transform.position != target)
- {
- player.transform.position = Vector3.MoveTowards(player.transform.position, target, sT * 2.0f);
- cam.fieldOfView = Mathf.Lerp(cam.fieldOfView, zoom, Time.deltaTime * smooth);
- yield return null;
- }
- moving = false;
- move = false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement