Update
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
using UnityEngine;
|
||||
namespace Invector
|
||||
{
|
||||
public class vLookAtCamera : MonoBehaviour
|
||||
{
|
||||
[Tooltip("Align position to stay always on top of parent")]
|
||||
public bool alignUp = false;
|
||||
[Tooltip("Height of alignment on top of parent \n!!(Check alignUp to work)!!")]
|
||||
public float height = 1;
|
||||
[Tooltip("Detach of the parent on start \n!!(if alignUp not is checked, the object not follow the parent)!!")]
|
||||
public bool detachOnStart;
|
||||
[Tooltip("use smoth to look at camera")]
|
||||
public bool useSmothRotation = true;
|
||||
protected Transform parent;
|
||||
public bool justY;
|
||||
internal Camera cameraMain;
|
||||
void Start()
|
||||
{
|
||||
if (detachOnStart)
|
||||
{
|
||||
parent = transform.parent;
|
||||
transform.SetParent(null);
|
||||
}
|
||||
cameraMain = Camera.main;
|
||||
}
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
cameraMain = Camera.main;
|
||||
Align(false);
|
||||
}
|
||||
void FixedUpdate()
|
||||
{
|
||||
Align(useSmothRotation);
|
||||
}
|
||||
void Align(bool useSmooth)
|
||||
{
|
||||
if (alignUp && parent)
|
||||
transform.position = parent.position + Vector3.up * height;
|
||||
if (!cameraMain) return;
|
||||
var lookPos = cameraMain.transform.position - transform.position;
|
||||
lookPos.y = 0;
|
||||
var rotation = Quaternion.LookRotation(lookPos);
|
||||
if (useSmooth)
|
||||
{
|
||||
transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * 4f);
|
||||
transform.eulerAngles = new Vector3(justY ? 0 : transform.eulerAngles.x, transform.eulerAngles.y, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
transform.eulerAngles = new Vector3(justY ? 0 : rotation.eulerAngles.x, rotation.eulerAngles.y, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user