Computing movement amount from framerate
Depending on the amount of power a computer has, the framerate will not be the same. Hence, the amount of movement of a user should be constant on each frame. If a frame was slow to print, the movement should be higher to keep a constant speed. This PR takes the framerate into account when moving the players.
This commit is contained in:
parent
0f2e21e88e
commit
46fcb86b28
@ -182,8 +182,12 @@ export class GameScene extends Phaser.Scene implements GameSceneInterface{
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
update() : void {
|
/**
|
||||||
this.CurrentPlayer.moveUser();
|
* @param time
|
||||||
|
* @param delta The delta time in ms since the last frame. This is a smoothed and capped value based on the FPS rate.
|
||||||
|
*/
|
||||||
|
update(time: number, delta: number) : void {
|
||||||
|
this.CurrentPlayer.moveUser(delta);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -9,7 +9,7 @@ export interface CurrentGamerInterface extends PlayableCaracter{
|
|||||||
userId : string;
|
userId : string;
|
||||||
PlayerValue : string;
|
PlayerValue : string;
|
||||||
initAnimation() : void;
|
initAnimation() : void;
|
||||||
moveUser() : void;
|
moveUser(delta: number) : void;
|
||||||
say(text : string) : void;
|
say(text : string) : void;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,31 +57,32 @@ export class Player extends PlayableCaracter implements CurrentGamerInterface, G
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
moveUser(): void {
|
moveUser(delta: number): void {
|
||||||
//if user client on shift, camera and player speed
|
//if user client on shift, camera and player speed
|
||||||
let haveMove = false;
|
let haveMove = false;
|
||||||
let direction = null;
|
let direction = null;
|
||||||
|
|
||||||
let activeEvents = this.userInputManager.getEventListForGameTick();
|
let activeEvents = this.userInputManager.getEventListForGameTick();
|
||||||
let speedMultiplier = activeEvents.get(UserInputEvent.SpeedUp) ? 500 : 100;
|
let speedMultiplier = activeEvents.get(UserInputEvent.SpeedUp) ? 25 : 9;
|
||||||
|
let moveAmount = speedMultiplier * delta;
|
||||||
|
|
||||||
if (activeEvents.get(UserInputEvent.MoveUp)) {
|
if (activeEvents.get(UserInputEvent.MoveUp)) {
|
||||||
this.move(0, -speedMultiplier);
|
this.move(0, -moveAmount);
|
||||||
haveMove = true;
|
haveMove = true;
|
||||||
direction = PlayerAnimationNames.WalkUp;
|
direction = PlayerAnimationNames.WalkUp;
|
||||||
}
|
}
|
||||||
if (activeEvents.get(UserInputEvent.MoveLeft)) {
|
if (activeEvents.get(UserInputEvent.MoveLeft)) {
|
||||||
this.move(-speedMultiplier, 0);
|
this.move(-moveAmount, 0);
|
||||||
haveMove = true;
|
haveMove = true;
|
||||||
direction = PlayerAnimationNames.WalkLeft;
|
direction = PlayerAnimationNames.WalkLeft;
|
||||||
}
|
}
|
||||||
if (activeEvents.get(UserInputEvent.MoveDown)) {
|
if (activeEvents.get(UserInputEvent.MoveDown)) {
|
||||||
this.move(0, speedMultiplier);
|
this.move(0, moveAmount);
|
||||||
haveMove = true;
|
haveMove = true;
|
||||||
direction = PlayerAnimationNames.WalkDown;
|
direction = PlayerAnimationNames.WalkDown;
|
||||||
}
|
}
|
||||||
if (activeEvents.get(UserInputEvent.MoveRight)) {
|
if (activeEvents.get(UserInputEvent.MoveRight)) {
|
||||||
this.move(speedMultiplier, 0);
|
this.move(moveAmount, 0);
|
||||||
haveMove = true;
|
haveMove = true;
|
||||||
direction = PlayerAnimationNames.WalkRight;
|
direction = PlayerAnimationNames.WalkRight;
|
||||||
}
|
}
|
||||||
@ -103,4 +104,4 @@ export class Player extends PlayableCaracter implements CurrentGamerInterface, G
|
|||||||
this.setX(MessageUserPosition.position.x);
|
this.setX(MessageUserPosition.position.x);
|
||||||
this.setY(MessageUserPosition.position.y);
|
this.setY(MessageUserPosition.position.y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user