30.08.2014 / 18:39 | |
mrEDitor Пользователь Сейчас: Offline
Имя: Эдуард Откуда: Новороссийск » Таганрог Регистрация: 13.03.2011
| Kalter, GameCanvas — зло. Nevesel, в чём конкретно проблема? В анимации пули? Она должна вылететь из ствола и полететь в цель, так, чтобы это было видно на глаз? |
30.08.2014 / 18:53 | |
Nevesel Пользователь Сейчас: Offline
Имя: Александр Регистрация: 07.11.2012
| mrEDitor, Как правильно задать скорость, чтобы пуля летела в цель, а не куда попало? Ведь прицел можно направить в любую сторону от танка! Нужно чтоб пуля летела туда-же!
Прикрепленные файлы: 1.zip (15.65 кб.) Скачано 32 раза |
30.08.2014 / 19:03 | |
Kalter Пользователь Сейчас: Offline
Имя: Гриб Откуда: Оренбург - Нежинка Регистрация: 16.10.2013
| Делай так: * Прицел определяй углом. Далее каждая пуля должна представлять что-то наподобие этого: class Bullet{
static final int SPEED=6;
int x;
int y;
int stepX;
int stepY;
int angel;
}
SPEED - скорость пули x, y - координаты angel - угол пули stepX, stepY - скорость, с которой будут изменяться координаты пули Для каждой существующей пули при создании определяй stepx, stepy: class Bullet{
static int SPEED=6;
int x;
int y;
int stepX;
int stepY;
int angel;
Bullet(int x,int y,int angel){
this.angel=angel;
this.x=x;
this.y=y;
stepX=(int)(Math.cos(Math.toRadians(angel))*SPEED);
stepY=(int)(Math.sin(Math.toRadians(angel))*SPEED);
}
}
И за одну итерацию цикла обновляй координаты каждой пули: class Bullet{
static int SPEED=6;
int x;
int y;
int stepX;
int stepY;
int angel;
Bullet(int x,int y,int angel){
this.angel=angel;
this.x=x;
this.y=y;
stepX=(int)(Math.cos(Math.toRadians(angel))*SPEED);
stepY=(int)(Math.sin(Math.toRadians(angel))*SPEED);
}
void updXY(){
x-=stepX;
y-=stepY;
}
}
__________________
Homo homini penis est. Изменено Kalter (30.08 / 19:07) (всего 6 раз) |
30.08.2014 / 19:08 | |
mrEDitor Пользователь Сейчас: Offline
Имя: Эдуард Откуда: Новороссийск » Таганрог Регистрация: 13.03.2011
| Nevesel, ну и как ты мне его запустить прикажешь?) У тебя есть XY пушки, XY цели, время полёта пули, так? Делишь XY на время полёта (в тактах), получаешь D и каждый такт прибавляешь по D к координатам пули. Математика, пятый класс, вторая четверть. ОК, с косинусами — восьмой класс, третья четверть. Изменено mrEDitor (30.08 / 19:09) (всего 1 раз) |
30.08.2014 / 19:35 | |
Nevesel Пользователь Сейчас: Offline
Имя: Александр Регистрация: 07.11.2012
| Kalter, mrEDitor, и почему когда я захожу на сюда, я чувствую себя тупым? Не, с синусами я не дружу... и дружить не хочу. Лучше уж по старинке- if-else... спасибо за совет, вообщем.
|
30.08.2014 / 19:38 | |
Kalter Пользователь Сейчас: Offline
Имя: Гриб Откуда: Оренбург - Нежинка Регистрация: 16.10.2013
| Не, с синусами я не дружу...А надо. В программировании игр они часто встречаются (кроме змеек всяких). Очень жаль, что на математике не говорят, для чего они нужны.
__________________
Homo homini penis est. |
30.08.2014 / 20:01 | |
Zvers Пользователь Сейчас: Offline
Регистрация: 06.02.2010
| Nevesel, Подружись, полезно
|
30.08.2014 / 20:04 | |
mrEDitor Пользователь Сейчас: Offline
Имя: Эдуард Откуда: Новороссийск » Таганрог Регистрация: 13.03.2011
| Kalter, как не говорят, когда говорят — для расчёта координат точек окружности. Например. Nevesel, если по окружности (дуге) — без (ко)синусов не обойдёшься.
|
30.08.2014 / 20:33 | |
Nevesel Пользователь Сейчас: Offline
Имя: Александр Регистрация: 07.11.2012
| Kalter (30.08.2014/19:38) Очень жаль, что на математике не говорят, для чего они нужны.Во-во, я тоже так подумал, когда учебники старые пересматривал... Намного лучше учить что-то, когда конкретно знаешь для чего оно тебе может понадобится. Вот ещё бы эта светлая мысль в голову минобразования пришла... mrEDitor, я без косинусов сделал- выше файл выкинул. В категорию "Быдлокод" выложу этот код, ради развлечения посмотришь |
30.08.2014 / 20:35 | |
Ксакеп Модератор форума Сейчас: Offline
Регистрация: 20.06.2012
| Nevesel, это база, всегда об этом говорили. Если ты этого не знаешь, то ты бедный человек.
|