【发布时间】:2016-06-11 17:08:11
【问题描述】:
我有两条信息:一个表示相对于网格的速度的 2D 向量和一个角度(180 到负 180 度),表示玩家的视角也相对于该网格,我就是从那个试图弄清楚用这些信息找出玩家正在按下的键(W、A、S、D)。
给我带来麻烦的是玩家相对于视角移动的事实。因此,如果玩家相对于我们的网格看 35 度并向前按 (W),玩家将向前移动 35 度,这使得速度混合了向前和向右 (D)。 需要注意的是,玩家在该方向上按键获得的最大速度为 250 单位/秒。但是向量会通过视角进行一些计算,从而产生最终的移动速度,这就是我问这个问题的原因。
我基本上想抵消角度对速度矢量的影响。
为此,我尝试使用以下公式使用旋转矩阵解决方案:
x' = x*cos(angle) - y*sin(angle)
y' = x*sin(angle) + y*cos(angle)
但这并没有给我很好的结果,似乎它们与原始速度向量有点相同。
有人知道我在这里做错了什么吗?我不应该只能使用旋转矩阵来计算这些值吗?
【问题讨论】:
-
你不能只拥有速度——你还需要加速度(用于状态变化)
-
@willywonkadailyblah 等等,为什么?状态变化是什么意思?
-
抱歉方向变了,所以键状态变了
-
好的,但是我应该在哪里加入加速? (获取它们不是问题,我只是不明白在这种情况下如何处理加速度向量)
-
如果你正以某种速度向某个方向移动,例如左。那么一个简单的解决方案就是A键。但是您也可能正在减速,即按 D,或以恒定速度 - 没有按下任何键(假设没有摩擦)。因此,如果您不考虑加速度,您将获得不确定的结果
标签: c# math rotation geometry 2d