示例#1
0
    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();
    }