public void Update(Transform _myTransform, Transform _targetTransform) { Vector3 targetDirection; float step = 0; if (_targetTransform != null) { if (feedback == null && navigation == null) { feedback = _myTransform.GetComponent <ObjectUserFeedback>(); navigation = _myTransform.GetComponent <ObjectNavigation>(); } if (dynamicRotation && !feedback.LightsFlickering) { Vector3 predictedNewPosition = Vector3.LerpUnclamped(navigation.LastPosition, _myTransform.position, 1.5f); targetDirection = predictedNewPosition - _myTransform.position; float angle = Vector3.Angle(_myTransform.forward, targetDirection); step = angle * Time.deltaTime * TURN_SPEED_DAMP; } else { targetDirection = _targetTransform.position - _myTransform.position; step = ROTATESPEED * Time.deltaTime; } Vector3 newDirection = Vector3.RotateTowards(_myTransform.forward, targetDirection, step, 0.0f); _myTransform.rotation = Quaternion.LookRotation(newDirection); } }
public void Clean() { feedback = null; navigation = null; }