我遇到了一个特定的问题。我正在学习如何创建一个非常基本的游戏,其中一个球将从一个正方形的左上角或一个矩形向下斜向直线行进到右下角(如图1和2所示)。现在我知道球的x和y位置都需要逐帧改变,但我不确定如何解决这个问题。
数学不是我的优点,我不确定如何计算确切路线,特别是因为正方形和矩形都有不同的角度。是否有任何数学公式我可以用来计算对角线以及每个球的x和y坐标需要逐帧调整多少。
根据我所做的研究,我认为我很可能需要使用sin或cos函数来计算角度,但我不确定所有内容是如何组合在一起的。一直在使用https://www.mathsisfun.com/sine-cosine-tangent.html尝试了解更多内容。
我打算开始对此进行编码,但我非常感谢这些基本问题的答案。我试图同时学习编程和数学方面,我觉得这种方法最适合。
非常感谢您的任何建议/帮助,我真的很感激。
答案 0 :(得分:0)
由于它是矩形,只需计算斜率:上升(Y)/运行(X)。这将为您提供每帧增加对象在每个方向上的位置的程度。根据您希望对象移动的速度或速度,您需要对其应用一些修改器(例如,如果您希望对象移动速度快两倍,则需要通过特定的更改来使用多个2实际更改对象位置之前的方向。
答案 1 :(得分:0)
方块: 如果您使用的是Frame或JFrame,则可以与您协调。
您可以按照以下方式将球从左上方向右下方移动 - > 假设你的左上角是(0,0),在两个坐标上加1,直到你到达右下角。
你可以使用for循环
来做到这一点答案 2 :(得分:0)
从技术上讲,您不需要这种映射的角度。你知道一行的公式是" y = m * x + b。"我认为你可以计算m,b。如果没有,请告诉我。
鉴于此 - 您可以根据您喜欢的任何内容(计时器,事件等)简单地增加x。您可以将增加的x放入上面的等式中,以获得各自的y。
现在,当你处理像素而不是实际数字时,这还不够。例如,为了避免在你的游戏中x / y以英尺为单位。您需要知道有多少像素代表一只脚。然后,当您绘制到屏幕时,您可以通过除以每英尺像素来调整坐标。
所以... 1.计算路径的m和b。 2.使用计时器。在每个刻度处,调整您的x值 3.使用x值计算y值 4.用缩放数除以x和y 5.使用新缩放的x和y绘制对象
现在......你可以用数学运作各种各样的技巧,但这应该让你开始。
答案 3 :(得分:0)
让我们左下角的矩形(或方形)有坐标(x0, y0)
和右上角(x1, y1)
。然后对角线有等式
X(t) = x0 + t * (x1 - x0)
Y(t) = y0 + t * (y1 - y0)
其中t
是范围0..1
中的参数。点t=0
对应(x0, y0)
,t=1
到(x1, y1)
,t=0.5
- 对应矩形的中心。所以你需要的是改变参数t
并计算位置。
当您的物体在任意方向上以恒定绝对速度移动时,请使用速度vx
和vy
的水平和垂直分量。在每个时刻获得坐标为x_new = x_old + delta_time * vx
。请注意,垂直边缘的反射只会改变速度'vx = - vx'的水平分量,依此类推。