Javascript 如何在js中使角色旋转到鼠标?

Javascript 如何在js中使角色旋转到鼠标?,javascript,Javascript,我试图让我的角色在js中旋转到我的鼠标移动。我正在尝试使用atan2(),但在我的移动中它就是不起作用。有人能帮忙吗?非常感谢 这里的代码:(点击ctrl-u并单击js/main.js) var canvas=document.getElementById(“canvas”) var ctx=canvas.getContext('2d') var enterGame=document.getElementById('enterGame') canvas.width=window.innerWi

我试图让我的角色在js中旋转到我的鼠标移动。我正在尝试使用atan2(),但在我的移动中它就是不起作用。有人能帮忙吗?非常感谢

这里的代码:(点击ctrl-u并单击js/main.js)

var canvas=document.getElementById(“canvas”)
var ctx=canvas.getContext('2d')
var enterGame=document.getElementById('enterGame')
canvas.width=window.innerWidth
canvas.height=window.innerHeight
var x2=画布宽度-60
变量y2=画布高度-60
console.log(canvas.width、canvas.height)
班级圈子{
构造函数(x,y,r){
这个.x=x;
这个。y=y;
这个。r=r;
this.color=“浅灰色”;
该值为0.dx=0;
这是0.dy=0;
this.centerX=canvas.width/2
this.centerY=canvas.height/2
}
画(){
如果(此.x=x2){
这是x=x2
}
如果(此.y=y2){
这个。y=y2
}
ctx.beginPath();
var name=localStorage.getItem('name')
ctx.font=“30px Comic Sans MS”;
ctx.textAlign=“中心”
ctx.fillText(名称,this.x,this.y-70)
ctx.closePath();
ctx.beginPath();
ctx.rect(this.x+33,this.y-55,18170);
ctx.fillStyle='#964B00';
ctx.fill();
ctx.stroke();
ctx.closePath();
ctx.beginPath();
弧(这个.x+40,这个.y-30,这个.r-30,0,2*Math.PI)
ctx.fillStyle='#964B00';
ctx.fill();
ctx.stroke()
ctx.closePath();
ctx.beginPath();
弧(这个.x+40,这个.y+30,这个.r-30,0,2*Math.PI)
ctx.fillStyle='#964B00';
ctx.fill();
ctx.stroke()
ctx.closePath();
ctx.beginPath();
弧(this.x,this.y,this.r,0,2*Math.PI);
ctx.fillStyle='#964B00';
var mathTestThing=localStorage.getItem('mathTest')
/*
ctx.translate(this.x,this.y);
ctx.rotate(-mathTestThing);
ctx.translate(-this.x,-this.y);
*/
ctx.fill()
ctx.moveTo(this.x,this.y)
ctx.lineWidth=5;
ctx.stroke();
ctx.closePath();
}
更新(){
//逐渐向dy或dx添加0.5
如果(控制器1.向上){
这是0.dy-=0.5
};
if(控制器1.右侧){
这是0.dx+=0.5
};
如果(控制器1.向下){
这是0.dy+=0.5
};
if(控制器1.左){
这是0.dx-=0.5
};
//如果dy或dx被添加到中,那么x和y也将被添加到中。如果不是,则它们为0。
this.x+=this.dx;
this.y+=this.dy;
这是0.dx*=0.9;
这是0.dy*=0.9;
这个.draw();
}
}
document.addEventListener(“mousemove”,(e)=>{
常数{
clientX,
客户
}=e;
localStorage.setItem('mathTest',Math.atan2(circle1.y-clientY,circle1.x-clientX)*Math.PI/180)
});
类控制器{
构造函数(){
this.up=false;
this.right=false;
this.down=false;
this.left=false;
让keyEvent=(e)=>{
如果(e.code==“KeyW”| e.code==“ArrowUp”){
this.up=e.type=='keydown'
};
如果(e.code==“KeyD”| | e.code==“ArrowRight”){
this.right=e.type=='keydown'
};
如果(e.code==“KeyS”| | e.code==“ArrowDown”){
this.down=e.type=='keydown'
};
如果(e.code==“KeyA”| | e.code==“箭头左”){
this.left=e.type=='keydown'
};
}
addEventListener('keydown',keyEvent);
addEventListener('keyup',keyEvent);
addEventListener('mousemove',keyEvent)
}
}
设circle1=新的圆(canvas.width/2,canvas.height/2,50,0,Math.PI*2);
设circle2=新圆();
让controller1=新控制器();
函数animate(){
clearRect(0,0,canvas.width,canvas.height);
圆圈1.update();
请求动画帧(动画)
}
制作动画();
函数enterGameTest(){
var x=document.getElementById(“画布”);
var y=document.getElementById(“inputElement”)
var z=document.getElementById(“inputArea”).value
如果(x.style.display==“无”&&z.length!=0){
x、 style.display=“block”;
y、 style.display=“无”;
localStorage.setItem('name',z)
}else如果(z.length==0){
var z=“未知”
localStorage.setItem('name',z)
x、 style.display=“block”;
y、 style.display=“无”;
}
}
/*
ctx.save();//保存当前转换
ctx.translate(player.x+25,player.y+25);//去球员所在的地方
ctx.旋转(播放器a);//旋转画布
ctx.fillRect(-player.w/2,-player.h/2,player.w,player.h);//围绕原点绘制玩家(记住我们移动了原点)
ctx.restore();//恢复保存的转换
*/
正文{
宽度:100%;
身高:100%;
保证金:0;
溢出:隐藏;
}
#帆布{
背景色:#2ca562;
背景尺寸:40px 40px;
背景图像:线性渐变(向右,黑色1px,透明1px),线性渐变(向下,黑色1px,透明1px);
边界:0px;
左边距:自动;
右边距:自动;
显示:块;
}



进入游戏