Тема: Flight
Показать сообщение отдельно
Старый 11.02.2012, 00:52   #32
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,356
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Flight

Сообщение от undertaker Посмотреть сообщение
Я хочу сделать, чтобы гг стрелял в сторону курсора, только ничего не получается подскажите, кто знает,заранее благодарен
1) Узнаём угол поворота от игрока до курсора
Local fang# = ATan2(MouseY() - player_y, MouseX() - player_x)
Где player_x и player_y координаты игрока.

2) Зная угол мы можем создавать пули
Абстрактно пули у нас такие:
Type TBullet
   Field x#, y#, angle#
End Type
angle# - угол поворота пули

Создавать новую будем так:
Local b.TBullet = New TBullet
b.x = player_x
b.y = player_y
b.angle = fang ; Это там раньше у нас угол который мы получали
3) Отлично! Пуля создана теперь надо её "оживить"
Function TBullet_Update()
   For b.TBullet = Eachin TBullet
       b\x = b\x + Cos( b\angle ) * 2 ;- поменяй, это скорость пули
       b\y = b\y + Sin( b\angle ) * 2 ;- это тоже :)

       ; Проверяем если пуля улетела за экран то удаляем
       If b\x<0 Or b\x>GraphicsWidth() Or b\y<0 Or b\y>GraphicsHeight() Then
            Delete b
       End If
   Next
End Function

Function TBullet_Draw()
   For b.TBullet = Eachin TBullet
       Oval(b\x - 3, b\y - 3, 6, 6)
   Next
End Function
Данные ф-ции надо вызывать в главном цикле.
Большая просьба - изучи, подумай как это работает.

* мог что-либо напутать. Писал в браузере. На блице давно ничего не писал.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
Nikich (11.02.2012), St_AnGer (12.02.2012), undertaker (11.02.2012)