Ejemplo n.º 1
0
    void Update()
    {
        if (LaserTarget != null)
        {
            var targetRegion = UnityExtensions.CreateRectFromCamera(_camera, LaserTargetScreenPercentage);

            if (targetRegion.Contains(LaserTarget.transform.position))
            {
                var direction = LaserTarget.transform.position - transform.position;
                if (direction != Vector3.zero)
                {
                    var offsetAngle = Mathf.Sin(Time.timeSinceLevelLoad) * LaserTargetMaxOffset;
                    var targetAngle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;

                    var fixedTargetAngle = UnityExtensions.ClampAngle(targetAngle + TARGET_ANGLE_FIX);
                    var currentAngle     = UnityExtensions.ClampAngle(transform.rotation.eulerAngles.z);
                    var angleDifference  = UnityExtensions.ClampAngle(fixedTargetAngle - currentAngle + offsetAngle);

                    var finalAngle = currentAngle + angleDifference * Time.deltaTime * 5f * LaserTargetAimRate;

                    transform.rotation = Quaternion.Euler(0f, 0f, finalAngle);
                }
            }
        }
    }