有一些类似于这个的问题,我已经阅读了所有这些问题,但我需要的是非常特殊的。
基本上我有一个球周围有一个可以点击的圆形区域。 单击此区域时,与球的中心相比,球应沿与咔嗒声方向相反的方向移动。因此,如果你在球下方点击它应该向上移动。 我通过使用以下
来解决这个问题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,但是这使得它们只能对角移动...
我需要一种方法来做到这一点,无论咔哒声离球有多远,它都会移动。任何建议将不胜感激。