【发布时间】:2017-02-12 07:39:17
【问题描述】:
我正在使用库 JInput 来检测 Java 游戏中的控制器输入。但是,为了获得轴移动的方向,我使用了这个:
gamePadContr.getComponent(Identifier.Axis.X).getPollData();
这给了我一个介于 -1 和 1 之间的小数,它告诉我方向。我希望玩家能够移动的不仅仅是上、下、左和右,所以我的游戏循环中有 40 个 if 语句来检查数字是否是一组数字,并增加 x 和 y 坐标因此。这是一个例子:
if(x > .1 && x < .2 && y == 1){
// do stuff
} else
if(x > .2 && x < .3 && y == 1{
// do stuff
}
我必须检查每一个以确保大多数方向都被考虑在内。
我的意思是,40 个 if 语句滞后。 我可以做些什么来优化它吗?
回答问题的一些编辑:
认为这无关紧要,但 .1 的增量有 40 个不同的 if 语句的原因是因为我正在检查操纵杆的 X 轴和 Y 轴。可能的组合是 (1, -1) (1, 1) (-1, 1) (-1, -1),以 0.1 的增量为我提供 40 种不同组合的负数和正数。 (我不知道这是否有意义。
//do stuff 只是将玩家的 x 和 y 坐标增加一定数量。
【问题讨论】:
-
向量、sin、cos、三角函数
-
当您以 0.1 为增量划分范围时,-1 和 1 之间的小数如何给您 40 个案例?此外,您发布的代码仅对
x < .2和x > .2有反应;在 x == .2 等处会发生什么? -
你能举个例子说明你在
// do stuff做什么吗?如何移动播放器?你看到什么模式了吗?如何使用这些模式来消除if语句? -
我的主要问题是有哪些替代方案可以优化这一点?