使实体遵循操纵角度的路径

  • 本文关键字:路径 操纵 实体 java angle
  • 更新时间 :
  • 英文 :


我正在制作一个简单的测试程序,试图开发一个子弹地狱游戏,但我的问题是,我想让一个实体沿着所需的路径移动,我不知道从哪里开始。

他们的运动系统通过有一个角度来工作,并使其cos和sin成为运动的x和y向量(这是我老师教我的方法(。这是代码中涉及的部分

this.dx = Math.cos(Math.toRadians(angle));
this.dy = Math.sin(Math.toRadians(angle));
}
public void tick() {
x+=dx*speed;
y+=dy*speed;
//this makes it reverse when the window's wall
if(x > Game.WIDTH || x < 0) {
dx = -dx;
}
if(y > Game.HEIGHT || y < 0) {
dy = -dy;
}
//this is here so angles are stored correctly
if(angle < 0) {
angle += Math.PI*2;
}else if(angle > Math.PI*2) {
angle -= Math.PI*2;
}
}

但正如我所说,我希望它遵循我选择的道路。我可以用一个方程或另一种方法来指定它(我真的不知道什么更实用(,但我不知道如何操纵角度,使其遵循我想要的路径。

当我问这个问题的时候,我已经想好了如何制作一个圆形

angle -= 0.05;
this.dx = Math.cos(angle);
this.dy = Math.sin(angle);

但我想有一种方法来输入方程,并以正确的方式操纵角度,使它们遵循方程在图上提供的路径

我有一些不同的潜在想法,可能是您正在寻找的:

选项1:如果您希望它遵循由图上的一条线定义的平滑路径,您可以尝试将方程参数化,例如,让x和y都依赖于变量t,而不是让x和y相互依赖。然后,您可以使用时间作为参数t,并直接根据将时间插入参数方程而不是设置角度来设置实体的x和y。

选项2:如果路径不是完全平滑的曲线,则可以将路径存储为空间中的一系列点。实体存储它当前正朝哪个点前进,一旦该点在一定距离内,它就会移动到下一个点,而不是

注意:对于选项1,它涉及直接更新实体的x和y,而不是设置角度。如果仍要更新角度,使实体面向/激发其移动的方向,则可以跟踪实体在上一个刻度中的位置。然后使用它的当前位置和上一个位置,你可以得到它移动方向的矢量,并用它来设置角度。

最新更新