计算旋转的最短路径,向左还是向右?

12

我正在制作一个简单的电脑玩家,用于我的简单2D动作游戏。它应该朝向我并射击,但我无法计算出最短路径...如果它想要射杀我,是应该向左转还是向右转呢? :P ?

我有两个角度:cpu_facing(cpu面对的方向)和player_degree(当cpu在中心时计算的角度)。

(我使用度数而不是弧度 :P)

有没有人在Javascript中完成过这个功能?


1
当它们直接面对彼此时,player_degree 是多少? - Lou Franco
当CPU处于中心时计算的角度是指哪个中心? 你是否有单位位置向量? - zzzzBov
当CPU处于中心时计算的角度。中心是指什么? - jgritty
我会认为,在计算与玩家的角度时,“CPU位于中心”意味着CPU位置是X轴和Y轴相交的地方。 - Andrew Clark
1个回答

22
(cpu_facing-player_degree+360)%360>180
  • false: 向负方向旋转
  • true: 向正方向旋转

似乎这将始终有效,如果 cpu_facing 是当前的朝向方向,并且 player_degree 是要求 cpu 指向以对准 player 的方向/角度。如果这两个条件都成立,则无论位置如何,它都将始终有效。 - matthewpavkov
1
这样行不行:如果(abs(cpu_facing-player_degree)<180),则向左转,否则向右转? - Jason94
@Jason94 不行,因为 abs() 函数会忽略正负号的差异,例如 +5-5 被视为相同,但它们代表不同的方向。 - ivan.mylyanyk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接