Пишу игру и нужно рассчитать траекторию полета пули. Пишу для тачскрина и траектория создается в зависимости от точки касания, позиции пальца на экране, но получается что работает только на вторые 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 ) ;
Комментариев нет:
Отправить комментарий