我正在尝试使用Java开发一个游戏作为我的主要项目。
我必须在棋盘上移动一个像物体一样的硬币(这是一个棋盘游戏),我想知道如何在任何方向上移动该物体以及如何在这些物体上实现二维碰撞(我已经实施了碰撞检测。)
直到现在,对象以slope=1
的直线移动,pathFinder(int x1, int y1, int slope);
(移动对象的方法)将当前位置(x1,y1)和斜率作为输入,因此如何在任何位置移动对象方向和任何坡度?此外,如何在java中实现速度向量,可能使用类Vector并定义其中的所有操作?
答案 0 :(得分:0)
对于圆形物体之间的碰撞 - 当它们的中心之间的距离小于它们的半径之和时,它们会发生碰撞。如果要在每个角度移动,则需要将对象坐标保持为浮点数,并使用三角法使用sin / cos / tan函数计算新位置。然后在绘制屏幕之前将浮点数转换为整数。
矢量可以通过多种方式实现。 (x,y)浮点对,标准化 - 大小1 - 平面对(x,y)和大小浮点变量。一旦你有了一个向量,那么改变位置是微不足道的。只需将速度矢量和旧位置的总和作为新位置。归一化矢量可以从运动角度计算如下:x = cos(ang)和y = sin(ang),角度以弧度表示。然后将归一化向量乘以大小变量以获得全速度向量,然后将其与位置相加以获得新位置。