JavaScript碰撞检测错误

时间:2016-11-09 14:21:19

标签: javascript html5 canvas html5-canvas collision-detection

欢迎所有正在阅读这篇文章的人 在尝试制作马里奥类型的游戏但我有一些碰撞bug 也许有人可以向我解释什么是不正确的以及如何解决它

那里的碰撞部分是硬编码值 我不能正确地跳到盒子上很难解释它是不是很难缓存js小提琴链接!

控制箭头的空间跳跃问题是跳跃 游戏逻辑

Game logic Img

setNames(
    do.call(rbind, c(make.row.names = F, 
        tapply(c$pr, c$or, FUN = function(v) subset(expand.grid(v, v), Var1 != Var2)))), 
    c('first', 'second'))

#  first second
#1     b      a
#2     c      a
#3     a      b
#4     c      b
#5     a      c
#6     b      c
#7     x      w
#8     w      x

这里虽然是一个完整的代码,可以在js小提琴上查看或播放它 js fiddle

3 个答案:

答案 0 :(得分:1)

你的功能说:

function crashwith(otherobj){}

但在你内心说

othertop=box.y;

你没有检查英雄是否与传递的对象崩溃,但是有一个盒子。这不是我认为功能应该做的。我想你想要:

othertop=otherobj.y;

此外,您的崩溃功能必须

       if ((mybottom < othertop) ||
        (mytop > otherbottom) ||
        (myright < otherleft) ||
        (myleft > otherright)) {
        Alert("crash");
        }

你的逻辑是另一回事

答案 1 :(得分:0)

现在我尝试这样的事情

        if(myright >= otherleft && mybottom > othertop &&myleft < otherright){
        console.log("R______")
        hero.X = otherleft - hero.width
    }
    if(myleft <= otherright && mybottom > othertop && myright > otherleft){
        console.log("L______")
        hero.X = otherleft + hero.width
    }

答案 2 :(得分:0)

我如何理解我不需要这部分

       if ((mybottom < othertop) ||
        (mytop > otherbottom) ||
        (myright < otherleft) ||
        (myleft > otherright)) {
        crash = false;