我如何在重力作用下弹回球?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何在重力作用下弹回球?相关的知识,希望对你有一定的参考价值。

我一直在尝试用重力弹跳帆布周围的球。每次球击中侧壁或底壁时,x和y的速度应降低。由于球只是从墙壁上掉下来,因此以下代码未起作用。

    <canvas id="canvas" width="200" height ="200"></canvas>

    var Ball=function(color) 
        this.color=color;
        this.x =100;
        this.y =100;
        this.xSpeed =5;
        this.ySpeed =3;

    ;

    Ball.prototype.move =function () 
        this.x += this.xSpeed;
        this.y += this.ySpeed;
    ;

    Ball.prototype.checkCollison =function () 
        if(this.x < 0 ) 
            if(this.xSpeed >0)
                this.xSpeed--;
            else if(this.xSpeed<0) 
                this.xSpeed++;
            

            this.xSpeed = -this.xSpeed;
        else if(this.x >200) 
            if(this.xSpeed >0)
                this.xSpeed--;
            else if(this.xSpeed<0) 
                this.xSpeed++;

            this.xSpeed = -this.xSpeed;

        else if(this.y < 0 ) 
            if(this.ySpeed>0) 
                this.ySpeed--;
            else if(this.ySpeed<0) 
                this.ySpeed++;
            
            this.ySpeed = -this.ySpeed;
        
    
    ;

请告诉我您是否有解决方案。

答案

经过反复试验,我终于找到了这部分代码的答案:

Ball.prototype.checkCollison =function () 
    if(this.x <= 0 ) 

        if(this.xSpeed <0)
            this.xSpeed++;
        this.xSpeed = -this.xSpeed;
        this.x=1;

    
    else if( this.x >= 200) 
        if(this.xSpeed > 0)
            this.xSpeed--;
        this.xSpeed = -this.xSpeed;
        this.x--;

    

    else if(  this.y >= 200) 
        if(this.ySpeed >0)
            this.ySpeed--;
        this.ySpeed = -this.ySpeed;
        this.y--;
    
    else if(this.y<=0) 
        this.ySpeed=-this.ySpeed;



    
;

尽管感谢大家的帮助,感谢您的努力。

以上是关于我如何在重力作用下弹回球?的主要内容,如果未能解决你的问题,请参考以下文章

研究重力加速度随地球纬度递增的原因

如何在不使用重力属性的情况下移动右侧的第一列?

如何在不单击“下一步”按钮的情况下以重力形式进入下一页

如何使窗口在触摸屏幕边缘时弹回(修补程序)

如何在重力形式中获取列表值?

万有引力与碰撞