我在java中制作一个侧滚动射击游戏,我正在试图找出知道子弹会在墙上撞击的背后的算法。到目前为止,我已经决定使用斜率截取形式可以工作,但是当我将代码转移到java时,它给了我奇怪的答案。
double impactY = ((mouseY-player.yPos)/(mouseX-player.xPos) * (800 - player.xPos) + player.yPos);
^Slope^ ^ x value for the wall.
impactY = 580.0
由于
答案 0 :(得分:2)
如果没有您提供有关您的问题的更多信息,我最好的猜测是,当您不想要的时候,您会遇到“整数除法”。
如果MouseY
,palyer.yPos
,mouseX
,& player.xPos
是整数,除(mouseY-player.yPos)/(mouseX-player.xPos)
除法是整数除法。 http://mathworld.wolfram.com/IntegerDivision.html
你需要做的是在分割发生之前将分子或分母强制转换为double / float:
((double) mouseY-player.yPos)/(mouseX-player.xPos)