2013-05-06 13 views
-2

Я делаю боковой прокручивающий шутер в java, и я пытаюсь вычислить арифметику, зная, где пуля будет воздействовать на стену. До сих пор я решил, что использование формы перехвата наклона будет работать, но когда я передал код в java, это дает мне странные ответы.Проблема с java-арифметикой

double impactY = ((mouseY-player.yPos)/(mouseX-player.xPos) * (800 - player.xPos) + player.yPos); 
            ^Slope^      ^x value for the wall. 

    impactY = 580.0 

Благодаря

+4

Что вы имеете в виду _strange answers_? –

+2

Каковы объявленные типы этих значений? Это влияет на то, как Java будет вычислять эти значения. –

+0

Ну, очевидно, результат этого уравнения не равен 580, и я считаю, что все значения являются целыми числами. –

ответ

2

без вашего предоставления более подробной информации о вашей проблеме, моя догадка, что вы работаете в «нацело», когда это не то, что вы хотите.

Если MouseY, palyer.yPos, mouseX, & player.xPos целых числа, деление (mouseY-player.yPos)/(mouseX-player.xPos) будет Целочисленное деление вместо вещественного числа деления. http://mathworld.wolfram.com/IntegerDivision.html

Что вам нужно сделать, это бросить либо числитель или знаменатель как двойной/поплавок, прежде чем происходит разделение:

((double) mouseY-player.yPos)/(mouseX-player.xPos)

Смежные вопросы