Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 各侧碰撞检测不工作_Javascript_Collision Detection_Game Physics - Fatal编程技术网

Javascript 各侧碰撞检测不工作

Javascript 各侧碰撞检测不工作,javascript,collision-detection,game-physics,Javascript,Collision Detection,Game Physics,我最近一直在研究一个2D平台,它有多个字符,你可以在它们之间切换。我想实现碰撞检测,循环通过每个角色,并根据他们接触的一侧阻止其移动。基本上,这样的角色可以跳到另一个上面,不能通过对方。我使用了AABB Intersect碰撞检测系统,然后确定我击中了角色的哪一侧,我使用了以下代码: for(var a=0;a

我最近一直在研究一个2D平台,它有多个字符,你可以在它们之间切换。我想实现碰撞检测,循环通过每个角色,并根据他们接触的一侧阻止其移动。基本上,这样的角色可以跳到另一个上面,不能通过对方。我使用了AABB Intersect碰撞检测系统,然后确定我击中了角色的哪一侧,我使用了以下代码:

for(var a=0;a}
一次碰撞将在循环中造成两次碰撞,首先是当
A=0
和被碰撞的对象
b=1
(例如),然后当
A=1
b=0
时,将再次检测到相同的碰撞

我认为最好有一个非活动字符的数组,你可以对照一个活动字符进行检查

您可以在玩家切换角色时创建这些变量。这样,您只需要一个循环,而不需要
if a!=b
检查

此代码说明了以下想法:

function characterChange(){
   activeCharacter = objA;
   inActiveCharacters = [objB, objC, objD];
}

function checkCollisions(){
   for(let i = 0; i<inActiveCharacters.length; i++){
      checkHit(activeCharacter, inActiveCharacters[i]);
   }
}

function checkHit(a,b) {
    // your a b check here
}
函数字符更改(){
activeCharacter=objA;
inActiveCharacters=[objB,objC,objD];
}
函数checkCollisions(){

对于(设i=0;我认为您可以检查角色是否与某个对象发生碰撞,以及是否是角色或块)执行该代码。我以前做过此操作。但是,如果我需要在非活动角色之间进行碰撞检测,该怎么办?有没有办法做到这一点?