|
|
- 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
-
- }
|