2016-11-20 11 views
-1

Я делаю cabal на C++, используя библиотеку SDL. Cabal - игра, в которой игрок сидит в нижней части экрана и может двигаться только в направлении x. Пока враги появляются впереди и стреляют ракетами на вас. Игра немного похожа на это.Rocket Curvature в C++ SDL игра

In game Picture

Я хочу, чтобы ракета взять траекторию, показанную в зеленый цвет. Изогнутая траектория. Однако он принимает траекторию, которая показана красным цветом. Имейте в виду, что игрок также движется, поэтому траектория не фиксирована.

Код я реализовал до сих пор это:

void Missiles::Move(int playerX) 
{ 

    angle =atan(playerX - X); 

    X=X + sin(angle)*2; 

} 

Где PlayerX является X координаты игрока и X является ракеты X координаты. Я заставил Y-координаты меняться с постоянной скоростью, поэтому я не показал их в коде.

+0

Если ракета имеет начальную скорость, а затем просто падает или должна быть больше похожа на поисковую раку? Проблема (отсюда и ответ) абсолютно не то же самое, и ваш вопрос совершенно неясен в этом. – Zouch

+0

Также необходимо, чтобы ракета указывала на игрока в любое время или должна иметь некоторую задержку, чтобы смотреть на него и т. Д. – Zouch

ответ

0

Чтобы получить угол прицеливания, необходимо принять Y-координату разницу в счете

angle = atan2(PlayerY - RocketY, PlayerX - RocketX); 

Другой вопрос - на самом деле и в физике скорость ракеты ограничена. Он состоит из вертикальных и горизонтальных компонентов

Vx = V * Cos(angle) 
Vy = V * Sin(angle) 
+0

Я забыл упомянуть, что ракета уволена врагами выше, и она должна приближаться к игроку на дне , Игрок может двигаться только по оси x. В вашей формуле не кажется, что ракета идет за движением игрока? –

+0

Да, я считал, что нацелился на врага. Заменяет EnemyY, X на PlayerY.X. Но каковы начальные состояния ракет? – MBo

 Смежные вопросы

  • Нет связанных вопросов^_^