Страницы

Поиск по вопросам

воскресенье, 9 февраля 2020 г.

Рассчитать траекторию пули

#разработка_игр #алгоритм #java


Пишу игру и нужно рассчитать траекторию полета пули. Пишу для тачскрина и траектория
создается в зависимости от точки касания, позиции пальца на экране, но получается что
работает только на вторые 45 градусов из первой половины экрана, вот как выглядит. 
А мне нужно, что бы стреляло в любую точку. Помогите, пожалуйста, как рассчитать?
Вот как я сделал, что бы оно так летало:
angle = Math.atan((y - gameView.shotY) / (x - gameView.shotX)); //позиция начальная
- координата косания

x = (int)(x + xSpeed * Math.cos(mAngle));
y = (int)(y + ySpeed * Math.sin(mAngle));

Достиг того эффекта, а нужно что бы равномерно летело. Заранее спасибо!    


Ответы

Ответ 1



У меня выдавало странные результаты пока не конвертнул тип данных для x, y к double. проблема в неявном конвертировании типов в первой формуле. попробуй так: angle = Math.atan ( (double) (y - viewY) / (x - viewX) ) ; UPDATE: что, где, когда: Если я правильно понял то происходит следующее (y - viewY) и (y - viewY) int. При делении результат неявно конвертируется к типу int (здесь и отрезается дробная часть). После чего он неявно конвертируется к типу double для передачи в функцию atan. проверить можно так: System.out.println ( 5 / 3 ) ; System.out.println ( (double) 5 / 3 ) ;

Ответ 2



Помимо angle = Math.atan ( (double) (y - viewY) / (x - viewX) ) ; надо (int) заменить Math.round x = Math.round(x + xSpeed * Math.cos(mAngle)); y = Math.round(y + ySpeed * Math.sin(mAngle));

Комментариев нет:

Отправить комментарий