Вариантов много. Например проверять угол поворота. Ты можешь узнать, куда тебе нужно повернуть турель, чтобы она выстрелила, ибо у нас есть точка наведения и кординаты турели. Проверяем ротацию, если подходит. Стреляем
Сделал так, но это оказалось неверным решением. Не могли бы вы подсказать?
неверным это как ? не работает, или хотелки дяди другие были ?
Так же стреляет в начале вращения.
чтобы понять что пушка навелась на врага надо проверять угол поворота между пушкой и врагом если угол < threshold , то тогда пушка навелась и можно стрелять threshold - это значение, которое ты настраиваешь чтобы можно было стрелять
не советую никогда сверять значение через = , а уж тем более не сверять значения кватернионов, проще ведь углы сверить
ну или ещё проще через Vector3.Dot сделать
Насчёт threshold не очень понял. Пушка крутится на 360 град.
рассчитываешь угол между форвард пушки и направление во врага и считаешь угол между двумя этими векторами если угол меньше чем threshold , например меньше чем 5 градусов, то тогда останавливаешь пушку и можно стрелять threshold это просто название переменной, настраиваешь в инспекторе
А есть метод расчёта угла между векторами?
в гугле все есть вставь это сообщение, которое ты только что написал, в переводчик и погугли
У тебя же там есть что-то асинхронное, видимо, то есть ты не дожидаешься окончания анимаций той же никак
dot функция возвращает значение в диапазоне -1 .. 1 , коответственно если 1 - вектора сонаправлены, если -1 - разнонаправлены. Скорми ему вектор взгляда турели и вычесленный вектор на цель ( вектор = конечная позиция минус начальная, т.е. позиция врага - позиция турели) https://docs.unity3d.com/ScriptReference/Vector3.Dot.html
Обсуждают сегодня