mirror of
https://github.com/ConjureETS/VZ.git
synced 2026-03-24 18:31:15 +00:00
60 lines
1.6 KiB
C#
60 lines
1.6 KiB
C#
using UnityEngine;
|
|
using System.Collections;
|
|
|
|
public class SquadCamera : MonoBehaviour {
|
|
|
|
private Transform targetTransform;
|
|
public float y = 25f; // store the height value since it will never change
|
|
public float offsetZ = -5f;
|
|
|
|
public float transitionDuration = 2.5f;
|
|
private bool isTransitioning;
|
|
|
|
// Use this for initialization
|
|
void Start () {
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update () {
|
|
|
|
}
|
|
|
|
void LateUpdate() {
|
|
// Early out if we don't have a target
|
|
if (!targetTransform) return;
|
|
|
|
if (!isTransitioning) {
|
|
transform.position = new Vector3(targetTransform.position.x, y, targetTransform.position.z + offsetZ);
|
|
}
|
|
}
|
|
|
|
|
|
public void SetTarget(Transform newTarget) {
|
|
Transform previousTarget = targetTransform;
|
|
|
|
if (!previousTarget || !previousTarget.Equals(newTarget)) {
|
|
|
|
targetTransform = newTarget;
|
|
StopCoroutine("Transition");
|
|
StartCoroutine("Transition");
|
|
}
|
|
}
|
|
|
|
IEnumerator Transition() {
|
|
|
|
float t = 0.0f;
|
|
Vector3 startingPos = transform.position;
|
|
Vector3 destination = new Vector3(targetTransform.position.x, y, targetTransform.position.z + offsetZ); // add the offset
|
|
|
|
isTransitioning = true;
|
|
while (t < 1.0f) {
|
|
|
|
t += Time.deltaTime * (Time.timeScale / transitionDuration);
|
|
|
|
transform.position = Vector3.Lerp(startingPos, destination, t);
|
|
yield return 0;
|
|
}
|
|
isTransitioning = false;
|
|
}
|
|
}
|