点击时让球远离球

时间:2018-03-31 16:17:28

标签: javascript click coordinates move direction

有一些类似于这个的问题,我已经阅读了所有这些问题,但我需要的是非常特殊的。

基本上我有一个球周围有一个可以点击的圆形区域。 单击此区域时,与球的中心相比,球应沿与咔嗒声方向相反的方向移动。因此,如果你在球下方点击它应该向上移动。 我通过使用以下

来解决这个问题
function clickBall(event){
    //finding position of click

    var rect = document.getElementById("theBall").getBoundingClientRect();
    var ballX=rect.left-294.8641870117188;
    var ballY=rect.top-60.125;

    click[0] = event.clientX-313.999593505859423; click[1] = event.clientY-79;         

    distanceX=ballX-click[0];   console.log(distanceX);
    distanceY=ballY-click[1];   console.log(distanceY);

    ballMoving=true;
    ballPosition = click;

    //document.getElementById("theBall").style.left=(ballX+distanceX)+"px";
    //document.getElementById("theBall").style.top=(ballY+distanceY)+"px";
}

moveBall由每个帧运行的更新调用

    function moveBall(){

    if(ballMoving){
        moveTime-=1;

        if(moveTime<0){  //control move time
            moveTime=ballMoveTime;
            ballMoving=false;
        }

        ballPosition[0]+=distanceX/150*moveTime;
        ballPosition[1]+=distanceY/150*moveTime;

        ballSpeed-=ballSpeedReducion;
        checkCollision();

        document.getElementById("theBall").style.left=ballPosition[0]+"px";
        document.getElementById("theBall").style.top=ballPosition[1]+"px";
    }

}

抱歉所有奇怪的数字我不得不做一些调整,但无论如何。

这个问题是,它让球远离咔嗒点,但是如果你点击非常靠近球,它会移动一点点,如果你在蓝色区域内尽可能远地点击它走得太远了。

我尝试通过if语句来解决这个问题,如果X和Y是正数或负数并且相应地使它们成为1或-1,但是这使得它们只能对角移动...

我需要一种方法来做到这一点,无论咔哒声离球有多远,它都会移动。任何建议将不胜感激。

0 个答案:

没有答案