2012-11-18 95 views
1

让我先说我是一个完全的新手,我正在上课,我们的任务之一是做一个基本的比赛游戏。我们可以使用我们发现的任何脚本,所以我选择了gamequery。前提是球员是完全自动化的,并且会在时间的x%时间内完成,剩下的时间是y%。我使用了gamequery tutorial space游戏作为一种指导,但是当我正在处理移动和碰撞时,我的代码非常缓慢,特别是所有背部移动。游戏冲突问题

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

而不是检查每个障碍与球员的碰撞,你应该做相反的事情:对每个球员检查他们是否与障碍物碰撞。

如果要检查,如果玩家将与障碍物碰撞之前,你真的打动你可以使用覆盖参数,像这样的文件中解释的玩家:https://github.com/onaluf/gameQuery/wiki/API-Changes-in-0.7

+0

谢谢。我会尝试。我已经看过关于碰撞覆盖的文档,但它并没有真正显示我是如何有点失落,它是否像var collided = $(this).collision(“。obstacle”,。“+ $。gQ。 groupCssClass);以及如何将其发送给玩家x和y? – flatty

+1

看起来像这样: $(“#”+ player.id).collision(“。obstacle”,。“+ $。gQ.groupCssClass, {x:player.nextX,y:player.nextY}); –

+0

非常感谢。这对我有很大的帮助。 – flatty