You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# MonoGame小行星克隆项目玩家后退移动异常问题咨询

问题根因

你实现向后移动的代码存在运算逻辑错误,不符合极坐标方向向量的计算规则:

  • 向上键的逻辑是正确的:Math.Cos(rotation)和Math.Sin(rotation)会计算出玩家当前朝向的单位向量的X、Y分量,乘以速度系数tangentialVelocity就能得到朝向方向的速度矢量。
  • 你写的向下键逻辑误用了减法运算符,相当于把单位向量的分量直接减去速度值,得到的结果完全不符合预期的反方向速度矢量。

修复方案

向后移动只需要在朝向方向的速度基础上取负值即可,把向下键的代码修改为以下内容:

if (Keyboard.GetState().IsKeyDown(Keys.Down))
{
    velocity.X = (float)Math.Cos(rotation) * -tangentialVelocity;
    velocity.Y = (float)Math.Sin(rotation) * -tangentialVelocity;
}

额外优化建议

当前你按下上下键时是直接给velocity赋值固定值,如果想要实现更符合小行星原版的惯性移动效果,可以改为按下按键时给速度叠加对应方向的加速度,而不是直接覆盖速度值,同时保留现有的摩擦减速逻辑即可。

内容的提问来源于stack exchange,提问作者keano-

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 20:15:01