Exemple #1
0
    public EStateType Update(float in_time)
    {
        //if(Mathf.Approximately(_owner.GetVectorBetweenCameraAndPoint().magnitude, 0f))
        //if(_owner.GetVectorBetweenCameraAndPoint().magnitude < 0.001f)
        if (_owner.IsAngleObtuse())
        {
            _owner.StopAllCameraMovements();
            Debug.Log(string.Format("GO TO IDLE; Distance = {0}", _owner.GetVectorBetweenCameraAndPoint().magnitude));
            return(EStateType.Idle);
        }


        Vector3 cam_velocity_project   = Vector3.Project(_owner.GetCameraVelocity(), _owner.GetVectorBetweenCameraAndPoint().normalized);
        Vector3 point_velocity_project = Vector3.Project(_owner.GetPointVelocity(), _owner.GetVectorBetweenCameraAndPoint().normalized);

        if (cam_velocity_project.magnitude < point_velocity_project.magnitude)
        {
            Debug.Log(string.Format("GO TO ACCELERATE; Distance = {0}", _owner.GetVectorBetweenCameraAndPoint().magnitude));
            return(EStateType.Accelerate);
        }

        Debug.Log(string.Format("GETSLOW: Current Camera Velocity = {0}, Current Point Velocity = {1}, Distance Between Camera and Point = {2}",
                                _owner.GetCameraVelocity().magnitude, _owner.GetPointVelocity().magnitude, _owner.GetVectorBetweenCameraAndPoint().magnitude));

        return(EStateType.GetSlow);
    }