PlayerCollisions+Update

This commit is contained in:
Atsuyo-INSA 2023-11-14 17:46:04 +01:00
parent 37d5b1fe38
commit c01995d423

View file

@ -1,7 +1,8 @@
const mapWidth = 210.;
const mapHeith = 100.;
const playerSize = 10.;
const playerSize = 50.;
const playerSpeed=5.;
const halfSqrtTwo=sqrt(2.)/2.;
class Player
{
constructor (id,x,y,name)
@ -34,7 +35,60 @@ class Player
}
}
retrieveServerInfo(id,x,y,dir)
{
if(this.id==id)
{
this.x=x;
this.y=y;
this.dir=dir;
if(dir!=0)
this.visibleDir=dir;
}
}
update(squares,circles)//update position
{
if(this.dir==0)
return;
let dx,dy;
switch(this.dir)
{
case 1: dx=0.;dy=-playerSpeed;break;
case 2: dx=halfSqrtTwo*playerSpeed;dy=-halfSqrtTwo*playerSpeed;break;
case 3: dx=1.;dy=0.;break;
case 4: dx=halfSqrtTwo*playerSpeed;dy=halfSqrtTwo*playerSpeed;break;
case 5: dx=0.;dy=playerSpeed;break;
case 6: dx=-halfSqrtTwo*playerSpeed;dy=halfSqrtTwo*playerSpeed;break;
case 7: dx=-playerSpeed;dy=0.;break;
case 8: dx=-halfSqrtTwo*playerSpeed;dy=-halfSqrtTwo*playerSpeed;break;
default:
}
this.x += dx;
this.y += dy;
for(let square in squares)
{
if(square.collide(this))
{
this.x-=dx;
this.y-=dy;
this.dir=0;
return;
}
}
for(let circle in circles)
{
if(circle.collide(this))
{
this.x-=dx;
this.y-=dy;
this.dir=0;
return;
}
}
}
get angle()
{