1

首先让我说我是 js 的完全新手,我正在上课,我们的任务之一是制作一个基本的竞赛游戏。我们可以使用我们找到的任何脚本,所以我选择了 gamequery。前提是玩家是完全自动化的,并且会在 x% 的时间直接获得,在 y% 的时间正确,其余的时间离开。我使用了 gamequery 教程空间游戏作为一种指南,但是当我处理运动和碰撞时,我的代码使它变得非常慢,尤其是在所有的前后运动中。

function Movement(){
movetwo = Math.random();
$(".obstacle").each(function(){                                 
                    var collided = $(this).collision("#player2Body,."+$.gQ.groupCssClass);
                if(collided.length > 0){                        
                             $("#player2").x($("#player2").x()-2);                                                                                          
                }               
                var collided2 = $(this).collision("#playerBody,."+$.gQ.groupCssClass);
                if(collided2.length > 0){                   
                             $("#player").x($("#player").x()-2);                        
                }
            });

if (movetwo <= twol) {
 $("#player2").y($("#player2").y()+2);
}
else if ((movetwo > twol) && (movetwo <= (twol + twor))){
$("#player2").y($("#player2").y()-2);
}
else {
$("#player2").x($("#player2").x()+2);
}
moveone = Math.random();
if (moveone <= twol) {
$("#player").y($("#player").y()+2);
}
else if ((moveone > twol) && (moveone <= (twol + twor))){
$("#player").y($("#player").y()-2);
}
else {
$("#player").x($("#player").x()+2);
}
}

我知道有一种方法可以在移动之前检测碰撞,但我真的不知道如何实现它,因为移动是随机的。交换机会更快吗?同样奇怪的是,它显示了与我放置的三个障碍物以外的所有障碍物发生碰撞,并且由于某种原因,它忽略了那些少数的障碍物,无论它们被随机放置在哪里。我认为我比我的技能水平保证更多,所以任何帮助将不胜感激。

4

1 回答 1

1

而不是检查每个障碍物与玩家的碰撞,您应该做相反的事情:为每个玩家检查他们是否与障碍物发生碰撞。

如果您想在真正移动玩家之前检查玩家是否会与障碍物发生碰撞,您可以使用本文档中解释的覆盖参数:https ://github.com/onaluf/gameQuery/wiki/API-Changes-in- 0.7

于 2012-11-18T23:28:12.753 回答