// Поворот ствола к цели 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); }
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); } } }