Ejemplo n.º 1
0
    private void SetCameraDynamicTargetRotation(GameObject target, TargetParameters.DynamicTargetRotationParameters parameters)
    {
        if (rotationCoroutine != null)
        {
            StopCoroutine(rotationCoroutine);
        }

        switch (parameters.CameraExecutionMode)
        {
        case CameraExecutionMode.Immediate:
            //ImmediatePositioning(position, parameters);
            break;

        case CameraExecutionMode.ConstantLerp:
            //StartCoroutine(ConstantLerpPositioning(position, parameters));
            break;

        case CameraExecutionMode.NormalLerp:
            rotationCoroutine = StartCoroutine(FollowRotation(target, parameters));
            break;

        case CameraExecutionMode.SmoothLerp:
            //StartCoroutine(SmoothLerpPositioning(position, parameters));
            break;

        case CameraExecutionMode.CustomLerp:
            rotationCoroutine = StartCoroutine(customDynamicRotatingLerp(target, parameters));
            break;
        }
    }
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            if (TreatTargetAs == TargetType.Static) //STATIC TARGET
            {
                TargetParameters.StaticTargetRotationParameters rotParams = TargetParameters.GetDefaultStaticRotationParameters();
                rotParams.Duration = 8f;
                cameraTest.SetStaticCameraTarget(Target, rotParams);

                TargetParameters.StaticTargetPositionParameters posParams = TargetParameters.GetDefaultStaticPositionParameters();
                posParams.CameraExecutionMode = CameraExecutionMode.CustomLerp;
                posParams.StartSCParameters.SinIntensityChangeTimer = 2f;
                posParams.StartSCParameters.CosIntensityChangeTimer = 2f;
                posParams.StartSCParameters.MinCosIntensity         = 0.1f;
                posParams.StartSCParameters.MaxCosIntensity         = 0.12f;
                posParams.StartSCParameters.MinSinIntensity         = 0.1f;
                posParams.StartSCParameters.MaxSinIntensity         = 0.11f;

                posParams.SteadyCamOnStart = SteadyCamBehaviour.TurnOnAndOverride;
                posParams.SteadyCamOnEnd   = SteadyCamBehaviour.TurnOnAndOverride;

                cameraTest.SetStaticCameraTarget(Target, posParams);
            }
            else //DYNAMIC TARGET
            {
                TargetParameters.DynamicTargetPositionParameters dynamicPosParams = TargetParameters.GetDefaultDynamicPositionParameters();
                dynamicPosParams.LerpSpeed = 2f;
                cameraTest.SetDynamicCameraTarget(Target.transform.GetChild(0).GetComponent <CameraTarget>(), dynamicPosParams);

                TargetParameters.DynamicTargetRotationParameters dynamicRotParams = TargetParameters.GetDefaultDynamicRotationParameters();
                dynamicRotParams.DynamicRotationBehaviour = DynamicRotationBehaviour.LookAt;
                dynamicRotParams.LerpSpeed = 5f;
                cameraTest.SetDynamicCameraTarget(Target, dynamicRotParams);
            }
        }
        //else if (Input.GetKey(KeyCode.LeftControl))
        //{
        //    NextTarget();
        //}
    }
Ejemplo n.º 3
0
    /// <summary>
    /// Follow the dynamic target rotation.
    /// </summary>
    /// <param name="target"></param>
    /// <param name="parameters"></param>
    /// <returns></returns>
    private IEnumerator FollowRotation(GameObject target, TargetParameters.DynamicTargetRotationParameters parameters)
    {
        if (parameters.DynamicRotationBehaviour == DynamicRotationBehaviour.LookAs)
        {
            while (true)
            {
                if (Quaternion.Angle(transform.rotation, target.transform.rotation) > parameters.LerpThreshold)
                {
                    transform.rotation = Quaternion.Slerp(transform.rotation, target.transform.rotation, parameters.LerpSpeed * Time.deltaTime);
                    Rotating           = true;
                }
                else
                {
                    Rotating = false;
                }

                yield return(null);
            }
        }
        else
        {
            Rotating = true;
            Vector3 direction;
            while (true)
            {
                direction = target.transform.position - transform.position;
                if (Vector3.Angle(transform.forward, direction) > parameters.LerpThreshold)
                {
                    transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(direction), parameters.LerpSpeed * Time.deltaTime);
                }
                else
                {
                    transform.LookAt(target.transform);
                }

                yield return(null);
            }
        }
    }
Ejemplo n.º 4
0
 public static void SetCameraDynamicTargetRotation(GameObject target, TargetParameters.DynamicTargetRotationParameters parameters)
 {
     SetCameraDynamicTargetRotationEvent.Invoke(target, parameters);
 }
Ejemplo n.º 5
0
 public void SetDynamicCameraTarget(CameraTarget cameraTarget, TargetParameters.DynamicTargetPositionParameters posParameters, TargetParameters.DynamicTargetRotationParameters rotParameters)
 {
     CameraEventSystem.SetCameraDynamicTargetPosition(cameraTarget.gameObject, posParameters);
     CameraEventSystem.SetCameraDynamicTargetRotation(cameraTarget.gameObject, rotParameters);
 }