我目前正在制作游戏。他的游戏包括从上到下的角度操作机器人的玩家。运动,碰撞和射击都已实施。
然而,机器人有2个“臂”从中发射武器,从这些武器射击我基本上设置了2个临时位置供机器人射击,每个手臂一个,包括一个偏移X方向+/- 15.当玩家向下看时,手臂射得很好并且子弹似乎是从机器人手臂伸出来的,然而,当我转动玩家向Y轴的左侧或右侧看时,似乎机器人正在从其体内射击子弹。我有一张图片来帮助说明问题
http://imageshack.us/photo/my-images/694/problemrs.png/
如您所见,左右抛射物生成点位于正确的位置,直到机器人身体旋转。我想要做的是在机器人身体周围旋转那2个Vector2位置。红色块显示射弹产生的位置,白色块代表我想要产卵位置的位置。我已经尝试了一些旋转方法,但是之后都没有效果。
任何线索?
答案 0 :(得分:4)
你可以用仿射变换做到这一点......但是,在你的情况下,用基本的trig来做它可能更容易。
LET X
,Y
是机器人的位置。
LET T
是机器人的旋转角度。
LET DX
是机器人中心到“手臂”的距离。 (对另一只手臂使用-DX)。
ArmX
=(cos(T
)* DX
)+ X
ArmY
=(罪(T
)* DX
)+ Y
答案 1 :(得分:1)
我想,你有一个前进方向和机器人的中心,然后
F = forward vector
c = center point
d = distance from center to arms
NF = normal to forward
NF = new Vector2(F.Y, -F.X);
NF.Normalize();
LeftArmShootOrigin = c + NF * d;
RightArmShootOrigin = c - NF * d;
答案 2 :(得分:0)
看起来你正在正确地旋转矢量。您缺少的部分是您需要将矢量的基/尾的位置(它开始的位置)编码为矢量并旋转它。