Постоянное двухмерное движение пули в шмупе

8

Я следовал учебнику pixelnest, чтобы сделать 2D-шмуп ( http://pixelnest.io/tutorials/2d-game-unity/player-and-enemies/ ).

Работая над этим, я экспериментировал с увеличением скорости стрельбы, чтобы получить непрерывный поток пуль, и заметил, что пули больше разнесены, если корабль движется назад, и они слипаются, когда корабль движется вперед. , Есть ли способ поддерживать постоянное расстояние между пулями независимо от движения игрока?

Я должен даже заботиться? У меня такое ощущение, что если игрок движется назад, скорость стрельбы будет существенно ниже (по крайней мере, пока они не достигнут края экрана) и наоборот, если вы двигаетесь вперед.

MHTri
источник

Ответы:

16

Это классический эффект Доплера , что вполне нормально. Если вы двигаетесь задом наперед, расстояние между пулями равно normal_distance_caused_by_firerate - ship_backward_distance_passed, как normal_distance_caused_by_firerateбудто корабль стоит на месте.

Если вы увеличите скорость пуль, то этот эффект будет сложнее заметить, потому что расстояние само по себе будет больше по сравнению со скоростью корабля.

Вы можете увеличить скорость огня, если корабль движется назад, и уменьшить его, когда он движется вперед, но это не нормальное поведение, и это может выглядеть странно. Это было бы также изменой игровой логике.

Подводя итог, вы должны оставить все как есть или уменьшить скорость корабля / увеличить скорость пули, чтобы уменьшить визуальную разницу в расстоянии между пулями при движении вперед / назад.

kreys
источник
2
+1 за эффект Доплера. Как говорит Крейс, это абсолютно нормальное поведение, и то, что большинство людей чувствует, является естественным ответом.
Том Блю Пиддок
Ха, я читал об эффекте Доплера, но мне в голову не приходило, что он применим здесь! Что касается «естественного ответа», меня больше беспокоило, повлияет ли это на баланс игрового процесса в любом случае. Это делает Сорту интересную механику незначительного риска / вознаграждения (подбирайтесь ближе к врагам, чтобы убить их быстрее). Другие shmups (touhou, treasure shmups и т. Д.), По-видимому, достигли постоянного расстояния пули, но вполне может быть, что они сделали скорость пули настолько высокой, что я одурачен, думая, что расстояние между выстрелами остается ровным.
MHTri
Вы на самом деле не убиваете врага намного быстрее. Я думаю, что вы все еще в замешательстве? Единственная разница в эффективности убийства - это «задержка» пуль (время, необходимое пули для перемещения), поскольку полоса пропускания (скорострельность) одинакова. Таким образом, в основном, если вы будете ближе, он умрет быстрее, только потому, что пули проходят меньшее расстояние, что занимает меньше времени.
AturSams
Хорошо, скажем, если бы я включил лазерное оружие, у этого оружия практически не было бы времени в пути (по сравнению с оружием на основе пули), и поэтому он наносил бы постоянный урон цели независимо от того, как игрок двигался. По сути, мой вопрос был о том, чтобы оружие на основе пули действовало подобно лазеру, поскольку, если игрок двигался назад / вперед, тогда время прохождения пули увеличивалось / уменьшалось.
MHTri
2
@MHTri Ваша способность использовать эффект Доплера естественно ограничена расстоянием, оставшимся между вами и целью. В конце концов вам придется отступить, и в течение этого времени ваша эффективная скорострельность (с точки зрения целей) уменьшается. Чем быстрее вы двигаетесь, тем выше скорострельность, но тем быстрее у вас кончится место. Это не означает, что умный игрок не может воспользоваться этим - если вы можете убить врага, прежде чем у вас закончится свободное пространство, и отступить, когда нет врагов, это чистая победа. Но я бы сказал, что умная игра должна быть вознаграждена, а не наказана.
Доваль
1

Добавьте скорость корабля к скорости пули, когда они будут созданы.

При движении назад пули будут замедляться. При движении вперед они будут ускорены. Однако это приведет к тому, что пули будут двигаться горизонтально, когда корабль движется - поэкспериментируйте с тем, чтобы на пули влияла только скорость y.

Стефан Донал
источник
По иронии судьбы, хотя это ближе к реальной физике и позволяет избежать «проблемы», которую автор пытается избежать, результат не соответствует ожиданиям игрока. Как говорит @kreys, эффект Доплера - это то, что люди ожидают увидеть здесь.
Peeja
3
если вы сделаете это, вы можете оказаться в странных ситуациях, например, когда вы быстро стреляете двумя пулями, в то время как при изменении направления движения корабля от задней к передней вы будете иметь пули с разной скоростью, где одна может догнать другую, что полностью неестественно.
kreys
(Опять же, это только ближе к реальной физике, если нет сопротивления воздуха. И чтобы быть по-настоящему точным, вы бы также вычитали импульс пуль из корабля. Но это было бы глупо.)
Пиджа
Спасибо за это. Я собираюсь попробовать сегодня вечером и посмотреть, что произойдет, но я представляю, что это случай преждевременной оптимизации, а переменное расстояние между пулями будет иметь незначительный игровой эффект.
MHTri
Я согласен, что вам не нужно заботиться об этом. Я знаю, что нет, когда я играю в SHMUPs
Steffan Donal