JavaScript游戏碰撞

时间:2017-12-12 16:56:27

标签: javascript collision game-physics

在线性格斗游戏中,我使用下面的公式来获得X碰撞和Y碰撞(当角色跳到另一个战斗机顶部时)。 我真的不知道这个公式中有什么错误,因为我在游戏中得到了一些无意义的逻辑错误。(当碰撞发生时,我向前和向后走向字符,所以我有时会得到无意义的位置。 除了我的公式,如果你有任何其他公式,请分享。感谢

    if (this.x < secondPlayer.x + secondPlayer.width + this.border &&
        this.x + this.width + this.border > secondPlayer.x && this.y < secondPlayer.y + secondPlayer.height + this.border &&
        this.height + this.y + this.border > secondPlayer.y && this.x != secondPlayer.x){
            return 'x';
        }
        else if (this.x == secondPlayer.x && this.y < secondPlayer.y + secondPlayer.height + this.border &&
            this.height + this.y + this.border > secondPlayer.y) {
                return 'y';
     }else{
         return 'n';
     }

1 个答案:

答案 0 :(得分:1)

我没有时间给你一个确切的答案,只是为了将你重定向到bounding boxes。定义像矩形一样的结构并检查链接中的边框:

myBox.x = this.x 
myBox.y = this.y
myBox.width = this.width + this.border
myBox.height = this.height + this.border

您也可以采用不同的方法:

myBox.left = this.x 
myBox.top = this.y
myBox.right = this.x + this.width + this.border
myBox.bottom = this.y + this.height + this.border

并检查: 我的左边是对手的右边,我的顶部是对手的底部,倒置了。

编辑: 使用您的代码,您不能检查两个冲突:代码说:

if (x collides) return 'x' else if (y collides) return 'y'

因此,如果您发生'x'碰撞,则函数返回并且不检查'y'。 此外,在第二次测试中我认为this.x == secondPlayer.x是错误的:只有当两个玩家具有相同的位置时才会检查'y'碰撞。但是它们可以重叠而不是在相同的'x'上(例如,我跳跃并落在对手的精灵中间)!