Co2封存:2D宇宙飞船的封盖速度(parallax trajectory cap)

因此,就像其他学习某种编程语言的人一样,我给了自己一个太空飞船游戏项目。到目前为止,我拥有视差星以及我对太空飞船游戏所期望的所有美好事物。该船位于游戏屏幕的中心,可以旋转 360 度,可以推力和滑行,并且通常表现得像外太空中的物体一样。但是,我在限制船速方面遇到了一个小问题。

该船有一个 dx 和 dy 值(它通过我的 update()函数将其转换为当前的箭头,以帮助您正确地将其转换为恒星;因此它们进行实际移动),并根据它所面对的角度在 x 或 y 轴上施加推力。我给船一个最大速度(假设为 5)和一个加速度(每帧 0.1)。当推力时,船的加速度始终是 100 %,没有使用数字箭头控制,

船上有这些变量,在必要时更新(这是一个简短的列表,因为其余的东西不直接相关):

x_speed
y_speed
speed
move_angle // Used to track direction of motion
face_angle // Used to determine x_accel and y_accel when thrusting
x_accel
y_accel
accel = 0.1 // Used to determine x_accel and y_accel by multiplying by the dx and dy returned by getDxDy(face_angle)
max_x
max_y
max_speed = 5 // Used to determine max_x and max_y by multiplying by the dx and dy returned by getDxDy(face_angle)

我使用这个函数检查我的 dx 和 dy 的加速度基于 face_angle:

function getDxDy(degree)
{
var dx;
var dy;
var degree = degree;
dx = -Math.sin(degToRad(degree));
dy = Math.cos(degToRad(degree));
var dxdy = {
    dx: dx,
    dy: dy
};
return dxdy;
}

我像这样更新每一帧加速度的速度:

x_speed += x_accel
y_speed += y_accel

我试着用多种不同类型的检查来限制速度,我试过了:

if (x_speed > max_x)
{
    x_speed = max_x
}

我试过这个:

if (x_speed > max_x)
{
    x_speed -= x_accel
}

第一个版本根据需要限制速度,但是我要么完全无法进一步修改我的加速度,要么当我尝试通过面对相反的方向和推力来逆转航向时,我的速度会立即跳到相反方向的 max_speed(因为 max_speed 是根据船的当前 face_angle 不断计算的)。如果我将该计算更改为 move_angle,那么当船开始并且不移动时,我会遇到问题。

第二个版本有一个问题,如果我碰巧在速度回到阈值以下之前停止推力;我的脸和推力,相反,我的推力是负的,这导致我在我行进的方向上加速得更远,与我面对的方向完全相反。

理想情况下,我希望能够在任向上将推力限制在某个值(例如 5),并且当我将方向改变几度时,船在几秒钟后就会朝着该方向前进推力,当我绕面和推力时,我希望船能像预期的那样减速。

如果有人玩过 Escape Velocity 游戏,那就是我正在努力的运动和控制系统-如果您愿意的话,这是我的“黄金标准”。

http://adrian.tmas-prestemon.com/game/v3/查看我当前有点工作的代码

处理这个的具体.js 文件可以在http://adrian.tmas-prestemon.com/game/v3/js/ships.js找到。请原谅乱七八糟的注释掉的代码和东西。我已经在这个特定的整体问题上工作了一个星期了。

我已经检查了在线提供的多个其他解决方案,并且与我的设计最相似的解决方案使用了我上面提供的第一个“if”示例,这对我不起作用。

2D Spaceship movement math 2d trajectory planning of a eship with physics Programming a smooth change of thrust from current velocity vector to a target vector

所有这些解决方案似乎都非常棒,但对于我的目的来说,它们似乎都有点复杂。我不打算像第一个例子那样实施任何类型的重力系统,而其他两个虽然相关,但似乎并没有为我的具体问题提供任何直接使用的东西。

任何人都可以提供任何基本的伪代码和 / 或其他类型的帮助-例如直接指向我回答我的问题的其他东西,我可能已经错过了-将不胜感激。

感谢您抽出时间阅读所有这些内容。:)

更新:

我已经对我的代码做了一些修改,我得到了它的工作比它曾经做的更好。它并不完美,但更多的实验,调整和调试是它应该采取的。:)

0

如果我将计算更改为 move_angle,那么当船开始时,我遇到问题,而不是移动。

dxdyx_speedy_speed值初始化为 0,并让x_speedy_speed值确定移动角度,而不是将move_angle分开。

或者,如果我误解了你的设置,只需将speed设置为 0,并在速度值低于某个截止值时进行不涉及三角学的计算。

或者,您可以让大多数速度和加速度计算在极坐标值上运行,并在显示到屏幕时转换为笛卡尔坐标。

抱歉,如果我语无伦次,那对我来说是一天中最糟糕的时候,我宁愿现在小睡一会儿,也不愿坐在办公桌前。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(168)
Rpg编程:如何使用SDL在C++中编程RPG游戏
上一篇
什么cpu能超频:如果我们创建的线程超过CPU所能承受的数量 会发生什么OS能处理吗:Python-线程
下一篇

相关推荐

  • 吸引力法则的运用实例:2D球之间的吸引力(force attraction formula)

    关于吸引力法则的运用实例的问题,在force attraction formula中经常遇到,我有一个模拟多个圆在二维空间中移动,它们之间的弹性碰撞。…

    2024-07-12 08:47:46
    0 53 50
  • Chinese make love:如何在LOVE2D中制作死亡动画(animated love graphics)

    关于Chinese make love的问题,在animated love graphics中经常遇到,在我的游戏中,我已经为玩家和敌人创造了碰撞(碰撞并不完美,但在很大程度上是有效的),但我很难弄清楚如何为玩家创造一个死亡动画。…

    2024-06-30 02:22:47
    0 43 12
  • C4d使用教程:C++ 2D游戏开发教程(2d game design tutorial)

    关于C4d使用教程的问题,在2d game design tutorial中经常遇到,Terry Cavanaugh reccomended 我前几天学习 C ++,所以有人可以将我链接到一个完整的和最近的(2012 年末最老的),游戏开发教程吗?我更喜欢 C ++,但是,如果你不知道一个,一个外部库就可以了。我可以用 C # / Python / Java 制作游戏,所以我知道非常基本的(如 int 是什么),但我已经尝试使用 C + 教程…

    2024-01-12 16:25:35
    0 78 51
  • Cartier love:执行Love2D脚本(love not found)

    关于Cartier love的问题,在love not found中经常遇到,我发现用 Love2d 框架执行我的脚本的唯一方法是压缩所有它,然后将 zip 重命名为 love。这种需要很多时间进行小修改。有没有更快的方法来做到这一点?我试图命令行,我得到这个错误…

    2024-06-14 01:47:57
    0 13 42
  • 健康无忧c款新华保险:Unity游戏2Dsidescroller健康栏 C#

    关于健康无忧c款新华保险的问题,在unity bar中经常遇到,关于Unity游戏2Dsidescroller健康栏 C#的编程代码示例如下。…

    2024-10-06 04:00:05
    0 12 12
  • C++动画:C/C++:2D动画库(animation libraries)

    关于C++动画的问题,在animation libraries中经常遇到,我需要编写一个应用程序(除其他外)呈现 2D 动画图像,让我们假设它是一个视频游戏。…

    2023-11-17 10:16:48
    0 33 20
  • 吃完维c:二维傅里叶变换在 C(2d fourier transform in image processing)

    关于吃完维c的问题,在2d fourier transform in image processing中经常遇到,我使用这个网站的等式实现了 2D DFT 和 IDFThttp://homepages.inf.ed.ac.uk/rbf/HIPR2/fourier.htm我认为这些是正确的,很好地解释了。…

    2024-06-05 07:15:19
    0 28 60
  • Cocos2d开发了哪些游戏:kamcord集成 cocos2d游戏教程

    关于Cocos2d开发了哪些游戏的问题,在kamcord中经常遇到,我已经使用 cocos2D 游戏引擎开发了一个游戏。现在我想在我的应用程序中集成 Kamcord 框架以添加录制功能。我无法找到有关如何将 Kamcord 集成到应用程序中的任何教程。有人可以为我提供从哪里开始的教程的集成代码吗?…

    2024-06-10 13:01:17
    0 74 31

发表评论

登录 后才能评论

评论列表(12条)