28 lines
1.2 KiB
C#
28 lines
1.2 KiB
C#
|
using UnityEngine;
|
||
|
using System.Collections;
|
||
|
|
||
|
public class FlyCam : MonoBehaviour {
|
||
|
private int currentWaypoint = 0;
|
||
|
public float rotateSpeed = 1.0f;
|
||
|
public float moveSpeed = 10.0f;
|
||
|
public float magnitudeMax = 10.0f;
|
||
|
|
||
|
|
||
|
void Update () {
|
||
|
if (WaypointCam.waypoints.Length>0){
|
||
|
Vector3 RelativeWaypointPosition = transform.InverseTransformPoint(new Vector3(WaypointCam.waypoints[currentWaypoint].position.x, WaypointCam.waypoints[currentWaypoint].position.y,WaypointCam.waypoints[currentWaypoint].position.z ) );
|
||
|
Vector3 targetPoint =new Vector3(WaypointCam.waypoints[currentWaypoint].position.x,WaypointCam.waypoints[currentWaypoint].position.y,WaypointCam.waypoints[currentWaypoint].position.z );
|
||
|
Quaternion targetrot = Quaternion.LookRotation ( targetPoint - transform.position);
|
||
|
transform.rotation = Quaternion.Slerp(transform.rotation, targetrot, Time.deltaTime * rotateSpeed);
|
||
|
var forward = transform.TransformDirection(Vector3.forward);
|
||
|
transform.position += forward * moveSpeed*Time.deltaTime;
|
||
|
if ( RelativeWaypointPosition.magnitude < magnitudeMax ) {
|
||
|
currentWaypoint ++;
|
||
|
if ( currentWaypoint >= WaypointCam.waypoints.Length ) {
|
||
|
currentWaypoint = 0;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|