Пример #1
0
    // Поворот ствола к цели
    void AimGun(Vector3 target)
    {
        float angle = SpecialMath.CalculateAngleToHitTarget(target, gunEndTransform.position, velocity);

        gunPivotTransform.localEulerAngles = new Vector3(360f - angle, 0f, 0f);

        transform.LookAt(target);
        transform.eulerAngles = new Vector3(0f, transform.rotation.eulerAngles.y, 0f);
    }
Пример #2
0
    public void AimTo(Vector3 toVec)
    {
        // если смотрим в бесконечность
        if (float.IsInfinity(toVec.x))
        {
            SetAim((int)AimState.INACTIVE);
        }
        else
        {
            SetAim((int)AimState.ACTIVE);

            // если смотрим на цель, но она дальше максимальной дальности
            // потенциальный допил - автоподстройка дальности, но тогда теряется смысл в анимации ствола и реальной баллистике
            if (SpecialMath.CalculateAngleToHitTarget(toVec, gunController.gunEndTransform.position, gunController.velocity) <= 45f)
            {
                SetAim((int)AimState.SEMIACTIVE);
            }
        }
    }