using UnityEngine;
|
|
using System.Collections;
|
|
|
|
public class movebetween : MonoBehaviour {
|
|
|
|
public GameObject[] points;
|
|
//public GameObject end;
|
|
|
|
public float distance;
|
|
public float startDistance;
|
|
public float endDistance;
|
|
public float changeDis;
|
|
|
|
private Vector3 startPos;
|
|
private Vector3 endPos;
|
|
public int count = 0;
|
|
public bool useCustomRotation = false;
|
|
|
|
private Rigidbody rb;
|
|
public float moveForce;
|
|
|
|
|
|
void Start(){
|
|
rb = gameObject.GetComponent<Rigidbody> ();
|
|
startPos = points[count].transform.position;
|
|
endPos = points[count+1].transform.position;
|
|
|
|
distance = Vector3.Distance (startPos, endPos) / Vector3.Distance (gameObject.transform.position, startPos);
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update () {
|
|
|
|
//transform.position = startPos + (endPos - startPos) / distance;
|
|
if (!useCustomRotation) {
|
|
Vector3 lookAtTarget = endPos;
|
|
lookAtTarget.y = transform.position.y;
|
|
transform.LookAt (lookAtTarget);
|
|
}
|
|
|
|
}
|
|
|
|
void FixedUpdate(){
|
|
|
|
startDistance = Vector3.Distance (gameObject.transform.position, startPos);
|
|
endDistance = Vector3.Distance (gameObject.transform.position, endPos);
|
|
|
|
if (Vector3.Distance (gameObject.transform.position, endPos) <= changeDis || Vector3.Distance (gameObject.transform.position, startPos) <= changeDis) {
|
|
moveForce = 1000;
|
|
} else {
|
|
moveForce = 0;
|
|
}
|
|
|
|
|
|
rb.AddForce (transform.forward * moveForce * Time.deltaTime);
|
|
|
|
if (Vector3.Distance (gameObject.transform.position, startPos) <= changeDis && count != 0) {
|
|
count--;
|
|
startPos = points[count].transform.position;
|
|
endPos = points[count+1].transform.position;
|
|
}
|
|
if ((Vector3.Distance (gameObject.transform.position, endPos) <= changeDis) && count + 1 != points.Length) {
|
|
count++;
|
|
startPos = points[count].transform.position;
|
|
endPos = points[count+1].transform.position;
|
|
|
|
}
|
|
|
|
distance = Vector3.Distance (startPos, endPos) / Vector3.Distance (gameObject.transform.position, startPos);
|
|
|
|
Vector3 newPos = gameObject.transform.position;
|
|
newPos.x = startPos.x + (endPos.x - startPos.x) / distance;
|
|
newPos.y = startPos.y + (endPos.y - startPos.y) / distance;
|
|
|
|
rb.MovePosition (newPos);
|
|
|
|
}
|
|
}
|