速度调整计算

问题描述 投票:0回答:1

我正在开发Android 2D“太空战士”游戏,我现在正在开发AI。

AI(敌人)以一定的速度V1(V1x,V1y)移动,并且想要调整该速度以使其与最大速度的截距矢量匹配。

我知道拦截速度是可以实现的:

V_intercept = (player.x - enemy.x, player.y - enemy.y)
normalize(V_intercept)
V_intercept.x *= MAX_SPEED
V_intercept.y *= MAX_SPEED

我正在寻找的是一种找到单一速度v_correction的方法,当应用于t时,它将使敌人以正确的速度朝向玩家。

我想我正在寻找两个功能:

getCorrectionVelocity(current_velocity, desired_velocity, acceleration) // not sure if acceleration is even needed here

getTimeToReachVelocity(current_velocity, desired_velocity, acceleration)

注意:

质量和转向时间无关紧要。想象一下所有质量= 1,转向某个方向的时间= 0

另外,我需要在AI的其他部分使用这些方法(例如,计算敌人将其速度与玩家的速度相匹配所需的时间),因此我需要它们是通用的,这意味着能够计算我给他们的任何速度的校正和时间。

提前致谢!

math vector velocity game-physics game-ai
1个回答
0
投票

我做的不同。忘记每次计算精确的校正脉冲而不是控制转向

因此,计算dot_product(AI_velocity,delta)并根据它向左或向右转向的方向(方向取决于您的坐标系)。因此对于拦截连续施加主推力以及一些小的转向推力。

但你必须实现类似this的Newtonian D'Alembert物理学。

如果你想应用摩擦也看here

© www.soinside.com 2019 - 2024. All rights reserved.