基于物理的2D运动:随时间变化的对象方向

Xarkox

我目前正在用Java创建2D太空游戏,您可以在其中控制太空中的飞船。游戏不使用任何外部库。

该船应该朝着光标移动。但是,在移动光标时,旧的作用力不会神奇地消失;随着时间的流逝,船会改变航向,最终朝着期望的方向移动。

但是,我遇到了有关船舶运动的问题。基本上,此图像粗略地说明了我想要实现的目标:

在此处输入图片说明

该图显示了该船在一个游戏滴答声中应该如何运动。进一步说明:

  • 圆圈显示了船的最大速度。

  • 目标角度是光标当前所在的位置。

  • 当前角度是船舶当前行驶的方向。

  • 当前角度应越来越接近目标角度,直到达到两个角度相同的点。

  • 船舶应采用尽可能短的路线将方向转向目标角度;它可以左右旋转,而不仅仅是左右旋转。

现在,我已经解释了我想要实现的目标,现在我将描述到目前为止我已经实现的目标以及它是如何工作的。

基本上,“船”是位于屏幕中央的图像。当您“移动”船时,船会保持原状。剩下的是游乐区。

船舶相对于代表游戏区域的坐标系的当前“位置”是整数xPos和yPos。

现在获取一些示例代码,这些代码显示了系统的工作方式:

 int xPos;
 int yPos;

 public void updateMovement() {
     xPos += xSpeed;
     yPos += ySpeed; 
 }

 public void moveForward() {
     double yTempSpeed = ySpeed;
     double xTempSpeed = xSpeed;
     yTempSpeed += 0.01 * Math.sin(Math.toRadians(targetAngle));
     xTempSpeed += 0.01 * Math.cos(Math.toRadians(targetAngle));
     double resultVector = Math.sqrt(xTempSpeed * xTempSpeed + yTempSpeed * yTempSpeed);
     if (resultVector < 2) {
         ySpeed += 0.01 * Math.sin(Math.toRadians(targetAngle));
         xSpeed += 0.01 * Math.cos(Math.toRadians(targetAngle));
 }

该代码成功地将轮船的最大速度设置为所需的值,但是,如果结果“矢量”大于2,即当速度已经达到其最大速度时,此功能将不起作用(轮船的航向不会改变)。最大值和targetAngle太接近船舶当前行驶的角度(+-Pi / 2)。

我将如何基于此实现来更改当前角度?

master_reineke
  public void moveForward() {
     ySpeed += 0.01 * Math.sin(Math.toRadians(targetAngle));
     xSpeed += 0.01 * Math.cos(Math.toRadians(targetAngle));
     double currentSpeed = Math.sqrt(xTempSpeed * xTempSpeed + yTempSpeed * yTempSpeed);
     if (currentSpeed > maxSpeed) {
         //the resulting speed is allways <= maxspeed (normed to that)
         ySpeed *= maxSpeed/currentSpeed;
         xSpeed *= maxSpeed/currentSpeed;
 }

希望这是您所需要的...尽管这是不现实的,但太空飞船具有最大速度,但就“可玩性”而言,我会这样做。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

特定方向的2D运动

来自分类Dev

2D轨道随时间增加

来自分类Dev

基于2D矢量的Ai运动

来自分类Dev

基于方向的刚体2d等速

来自分类Dev

人口随时间变化

来自分类Dev

随时间变化的数组

来自分类Dev

在Matlab中计算对象随时间变化的频率

来自分类Dev

ggplot2:使用箭头显示随时间变化的值

来自分类Dev

使用ggplot2绘制随时间变化的多个频率

来自分类Dev

使用ggplot2绘制随时间变化的多个频率

来自分类Dev

DBpedia结果随时间变化

来自分类Dev

由组件组成的游戏对象的2D物理

来自分类Dev

在不依赖固定时间步长的情况下随时间插值2D空间的角度

来自分类Dev

坐标对的2D弹丸运动

来自分类Dev

如何设计一个对象状态随时间变化的类?

来自分类Dev

绘制随时间变化的风速和风向

来自分类Dev

SAS计算值随时间变化的次数

来自分类Dev

随时间变化/绝对数字

来自分类Dev

如何使svg颜色随时间变化

来自分类Dev

如何绘制随时间变化的图?

来自分类Dev

绘制随时间变化的频率分布(堆叠)

来自分类Dev

如何合并随时间变化的变量[R]

来自分类Dev

随时间变化的颤振设计

来自分类Dev

随时间变化的颤振设计

来自分类Dev

识别R中随时间变化的变量

来自分类Dev

Java输出值随时间的变化

来自分类Dev

Gmaps.js随时间变化的路线

来自分类Dev

如何产生随时间变化的频率波?

来自分类Dev

如何识别未随时间变化的条目?