首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >速度调整计算

速度调整计算
EN

Stack Overflow用户
提问于 2014-05-28 23:33:10
回答 1查看 131关注 0票数 0

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

AI (敌人)正在以一定的速度V1 (V1x,V1y)移动,它想要调整这个速度,以便以最大速度匹配拦截向量。

我知道截获速度是可以达到的:

代码语言:javascript
复制
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时间时,它将使敌人以正确的速度朝向玩家。

我想我要找两个函数:

代码语言:javascript
复制
getCorrectionVelocity(current_velocity, desired_velocity, acceleration) // not sure if acceleration is even needed here

getTimeToReachVelocity(current_velocity, desired_velocity, acceleration)

注意:

质量和转向时间不相关。假设所有质量= 1,转向某个方向的时间=0

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

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2014-05-29 15:08:21

我做的是不同的。忘记计算每次精确的修正脉冲,而只计算控制方向

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

但是你必须实现牛顿的D‘’Alembert物理,类似于this

如果你想应用摩擦力,也可以看看here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23915955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档