|
|
@ -0,0 +1,87 @@ |
|
|
|
using System.Collections; |
|
|
|
using System.Collections.Generic; |
|
|
|
using UnityEngine; |
|
|
|
using NaughtyAttributes; |
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Utility script to fake parent an object to another
|
|
|
|
/// </summary>
|
|
|
|
public class CopyTransform : MonoBehaviour |
|
|
|
{ |
|
|
|
|
|
|
|
#region Inspector Fields
|
|
|
|
[SerializeField, BoxGroup("References")] |
|
|
|
public Transform m_target; |
|
|
|
|
|
|
|
[SerializeField, Range(0, 1)] |
|
|
|
public float m_dampening = 1; |
|
|
|
#endregion Inspector Fields
|
|
|
|
|
|
|
|
#region Private Fields
|
|
|
|
|
|
|
|
private Vector3 m_positionOffset; |
|
|
|
private Quaternion m_rotationOffset; |
|
|
|
|
|
|
|
|
|
|
|
#endregion Private Fields
|
|
|
|
|
|
|
|
#region Getters
|
|
|
|
|
|
|
|
#endregion Getters
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region MonoBehaviour Functions
|
|
|
|
|
|
|
|
private void Awake() |
|
|
|
{ |
|
|
|
m_positionOffset = transform.position - m_target.position; |
|
|
|
m_rotationOffset = m_target.rotation * Quaternion.Inverse(transform.rotation); |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// OnEnable is called when the object becomes enabled and active.
|
|
|
|
/// </summary>
|
|
|
|
private void OnEnable() |
|
|
|
{ |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// OnDisable is called when the behaviour becomes disabled.
|
|
|
|
/// </summary>
|
|
|
|
private void OnDisable() |
|
|
|
{ |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Update is called once per frame
|
|
|
|
/// </summary>
|
|
|
|
private void FixedUpdate() |
|
|
|
{ |
|
|
|
Vector3 expectedPosition = m_target.position + (m_target.rotation * m_positionOffset); |
|
|
|
Quaternion expectedRotation = m_target.rotation * m_rotationOffset; |
|
|
|
|
|
|
|
transform.position = Vector3.Lerp(transform.position, expectedPosition, m_dampening); |
|
|
|
transform.rotation = Quaternion.Lerp(transform.rotation, expectedRotation, m_dampening); |
|
|
|
} |
|
|
|
|
|
|
|
#endregion MonoBehaviour Functions
|
|
|
|
|
|
|
|
#region Class Functionality
|
|
|
|
|
|
|
|
#endregion Class Functionality
|
|
|
|
|
|
|
|
#region Editor Functions
|
|
|
|
/// <summary>
|
|
|
|
/// Called when the Component is created or Reset from the Inspector
|
|
|
|
/// </summary>
|
|
|
|
private void Reset() |
|
|
|
{ |
|
|
|
//useful for finding components on creation
|
|
|
|
} |
|
|
|
#endregion Editor Functions
|
|
|
|
|
|
|
|
} |