【问题标题】:JavaScript Breakout - Ball horizontal motion based on where it hits the paddleJavaScript Breakout - 基于击球位置的球水平运动
【发布时间】:2011-03-03 10:59:25
【问题描述】:

问题很容易解释。我试图让我的 15 像素 x 15 像素立方体的水平运动基于它在我正在开发的突破游戏中击中我的 15 像素 x 90 像素桨的位置。这个想法是,当它从一个方向击中桨的中间时,它只会对角向上相反。已经坚持了一段时间并尝试了不同的方法,但没有任何效果。任何帮助将不胜感激。谢谢!!

这是我目前所拥有的:

var left = parseInt(box.style.left);

var top = parseInt(box.style.top);

var paddleTop = parseInt(paddle.style.left) - parseInt(box.width);

var paddleBott = parseInt(paddle.style.left) + parseInt(paddle.width);

var deltaL = 3;

var deltaT = 7;

    if(left + deltaL >= parseInt(view.width)){

        deltaL = -deltaL;

    } else if(left + deltaL <= 0){

        deltaL = -deltaL;

    } else if(top + deltaT >= parseInt(view.height)+8){

        deltaT = 0;
        deltaL = 0;

    } else if(top + deltaT <= 0){

        deltaT = -deltaT;

    }

    if(top + deltaT >= ((parseInt(view.height-19)) - parseInt(paddle.height))){

        if((left >= paddleTop) && (left <= paddleBott)){    

            deltaL = -deltaL;

            deltaT = -deltaT;


        } 

    }


    box.style.left = left + deltaL + 'px';
    box.style.top = top + deltaT + 'px';

【问题讨论】:

    标签: javascript


    【解决方案1】:

    嗯,你应该继续在与以前相同的方向上增加球的 x 位置,但开始减少球的 y 位置而不是增加它

    换句话说,如果你有一个对象:dir = {x:1, y:1},然后测试与桨的碰撞,并设置 dir.y = -dir.y

    对于每一帧,ball.x += dir.x 和 ball.y += dir.y

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-10
      • 2015-07-21
      • 2015-06-23
      • 1970-01-01
      • 2013-09-21
      相关资源
      最近更新 更多