Вниз  Java-программирование (1-ые посты)
- 30.08.2014 / 18:39
mrEDitor
  Пользователь

mrEDitor 
Сейчас: Offline
Kalter, GameCanvas — зло. :gg:
Nevesel, в чём конкретно проблема? В анимации пули? Она должна вылететь из ствола и полететь в цель, так, чтобы это было видно на глаз?
- 30.08.2014 / 18:53
Nevesel
  Пользователь

Nevesel 
Сейчас: Offline
mrEDitor, Как правильно задать скорость, чтобы пуля летела в цель, а не куда попало? Ведь прицел можно направить в любую сторону от танка! Нужно чтоб пуля летела туда-же!


Прикрепленные файлы:
1.zip (15.65 кб.) Скачано 32 раза
- 30.08.2014 / 19:03
Kalter
  Пользователь

Kalter 
Сейчас: Offline
Делай так:
  * Прицел определяй углом.

Далее каждая пуля должна представлять что-то наподобие этого:
  1. class Bullet{
  2.  
  3.     static final int SPEED=6;
  4.  
  5.     int x;
  6.     int y;
  7.     int stepX;
  8.     int stepY;
  9.     int angel;
  10. }

SPEED - скорость пули
x, y - координаты
angel - угол пули
stepX, stepY - скорость, с которой будут изменяться координаты пули

Для каждой существующей пули при создании определяй stepx, stepy:
  1. class Bullet{
  2.  
  3.     static int SPEED=6;
  4.  
  5.     int x;
  6.     int y;
  7.     int stepX;
  8.     int stepY;
  9.     int angel;
  10.  
  11.     Bullet(int x,int y,int angel){
  12.  
  13.         this.angel=angel;
  14.         this.x=x;
  15.         this.y=y;
  16.         stepX=(int)(Math.cos(Math.toRadians(angel))*SPEED);
  17.         stepY=(int)(Math.sin(Math.toRadians(angel))*SPEED);
  18.     }
  19. }

И за одну итерацию цикла обновляй координаты каждой пули:
  1. class Bullet{
  2.  
  3.     static int SPEED=6;
  4.  
  5.     int x;
  6.     int y;
  7.     int stepX;
  8.     int stepY;
  9.     int angel;
  10.  
  11.     Bullet(int x,int y,int angel){
  12.  
  13.         this.angel=angel;
  14.         this.x=x;
  15.         this.y=y;
  16.         stepX=(int)(Math.cos(Math.toRadians(angel))*SPEED);
  17.         stepY=(int)(Math.sin(Math.toRadians(angel))*SPEED);
  18.     }
  19.  
  20.     void updXY(){
  21.  
  22.         x-=stepX;
  23.         y-=stepY;
  24.     }
  25. }

__________________
 Homo homini penis est.

Изменено Kalter (30.08 / 19:07) (всего 6 раз)
- 30.08.2014 / 19:08
mrEDitor
  Пользователь

mrEDitor 
Сейчас: Offline
Nevesel, ну и как ты мне его запустить прикажешь?) У тебя есть XY пушки, XY цели, время полёта пули, так?
Делишь XY на время полёта (в тактах), получаешь D и каждый такт прибавляешь по D к координатам пули.
:facepalm: Математика, пятый класс, вторая четверть.
ОК, с косинусами — восьмой класс, третья четверть.

Изменено mrEDitor (30.08 / 19:09) (всего 1 раз)
- 30.08.2014 / 19:35
Nevesel
  Пользователь

Nevesel 
Сейчас: Offline
Kalter, mrEDitor, и почему когда я захожу на сюда, я чувствую себя тупым? Не, с синусами я не дружу... и дружить не хочу. Лучше уж по старинке- if-else... спасибо за совет, вообщем.
- 30.08.2014 / 19:38
Kalter
  Пользователь

Kalter 
Сейчас: Offline
Не, с синусами я не дружу...А надо. В программировании игр они часто встречаются (кроме змеек всяких). Очень жаль, что на математике не говорят, для чего они нужны.
__________________
 Homo homini penis est.
- 30.08.2014 / 20:01
Zvers
  Пользователь

Zvers 
Сейчас: Offline
Nevesel, Подружись, полезно
- 30.08.2014 / 20:04
mrEDitor
  Пользователь

mrEDitor 
Сейчас: Offline
Kalter, как не говорят, когда говорят — для расчёта координат точек окружности. Например.
Nevesel, если по окружности (дуге) — без (ко)синусов не обойдёшься.
- 30.08.2014 / 20:33
Nevesel
  Пользователь

Nevesel 
Сейчас: Offline
Kalter (30.08.2014/19:38)
Очень жаль, что на математике не говорят, для чего они нужны.
Во-во, я тоже так подумал, когда учебники старые пересматривал... Намного лучше учить что-то, когда конкретно знаешь для чего оно тебе может понадобится. Вот ещё бы эта светлая мысль в голову минобразования пришла...

mrEDitor, я без косинусов сделал- выше файл выкинул. В категорию "Быдлокод" выложу этот код, ради развлечения посмотришь :-)
- 30.08.2014 / 20:35
Ксакеп
  Модератор форума

Ксакеп 
Сейчас: Offline
Nevesel, это база, всегда об этом говорили. Если ты этого не знаешь, то ты бедный человек.
Наверх  Всего сообщений: 16875
Фильтровать сообщения
Поиск по теме
Файлы топика (794)