gamequery碰撞问题

时间:2012-11-18 02:51:37

标签: performance collision-detection gamequery

首先让我说我是一个完整的新手,我正在上课,我们的任务之一是做一个基本的比赛。我们可以使用我们找到的任何脚本,所以我选择了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);
}
}

我知道有一种方法可以在移动之前检测碰撞但我真的不知道如何实现它,因为移动是随机的。开关会更快吗?奇怪的是,它显示了与我放置的所有障碍物之间的所有障碍物的碰撞,并且出于某种原因,无论它们随机放置在哪里,它都会忽略那些障碍物。我认为我的技能水平比我的技能水平更高,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

不是检查每个障碍物与玩家的碰撞,而是应该做对手:对于每个玩家,检查他们是否与障碍物碰撞。

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