-3

我正在用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

1 回答 1

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)

于 2013-05-06T16:15:22.567 回答