public override void LateUpdateState() { //set the offset to the player each frame m_targetPos = m_camera.CameraTarget.position; m_targetPos.y = m_camera.OffsetHeight; //calculate the direction from camera to player, kill y, and normalize to create valid direction m_lookDir = m_targetPos - m_camera.transform.position; m_lookDir.Normalize(); m_camera.LookDirection = m_lookDir; //calculate the target position m_targetPos = m_targetPos - (m_lookDir * m_camera.DistanceAway); m_camera.transform.position = Vector3.Lerp(m_camera.transform.position, m_targetPos, Time.deltaTime * m_camera.SmoothSpeed); float step = m_camera.OrbitSpeed * Clock.DeltaTime; m_camera.transform.RotateAround(m_camera.CameraTarget.position, m_camera.CameraTarget.up, step * m_moveVector.x); m_camera.SmoothLookAt(); m_camera.transform.RotateAround(m_camera.CameraTarget.position, m_camera.CameraTarget.right, step * m_moveVector.y); m_camera.SmoothLookAt(); }
public override void LateUpdateState() { //set the offset to the player each frame m_targetPos = m_camera.CameraTarget.position; m_targetPos.y = m_camera.OffsetHeight; //calculate the direction from camera to player, kill y, and normalize to create valid direction m_lookDir = m_targetPos - m_camera.transform.position; m_lookDir.Normalize(); m_camera.LookDirection = m_lookDir; //calculate the target position m_targetPos = m_targetPos - (m_lookDir * m_camera.DistanceAway); m_camera.transform.position = Vector3.Lerp(m_camera.transform.position, m_targetPos, Time.deltaTime * m_camera.SmoothSpeed); //Look at the target m_camera.SmoothLookAt(); }