Страницы

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

воскресенье, 14 апреля 2019 г.

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

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


Ответ

У меня выдавало странные результаты пока не конвертнул тип данных для 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 ) ;

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

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