feat: dash doesnot affect by gravity and will cancel jump

This commit is contained in:
Renge 2022-05-07 22:32:39 -04:00
parent bc347270a6
commit cf3c3cf860
2 changed files with 21 additions and 17 deletions

View File

@ -38,21 +38,22 @@ export default class Jump extends InAir {
} }
} }
if(this.owner.onCeiling){
this.parent.velocity.y = 0;
this.finished(PlayerStates.FALL);
}
// If we're falling, go to the fall state
if(this.parent.velocity.y >= 0){
this.finished(PlayerStates.FALL);
}
if (!this.jumpTimer.isStopped() && !this.jumpTimer.isPaused() && InputWrapper.isJumpPressed()) { if (!this.jumpTimer.isStopped() && !this.jumpTimer.isPaused() && InputWrapper.isJumpPressed()) {
this.parent.velocity.y = -400; this.parent.velocity.y = -400;
} }
else { else {
this.jumpTimer.pause(); this.jumpTimer.pause();
} }
if(this.owner.onCeiling){
this.parent.velocity.y = 0;
}
// If we're falling, go to the fall state
if(this.parent.velocity.y >= 0){
this.finished(PlayerStates.FALL);
}
super.update(deltaT); super.update(deltaT);
} }

View File

@ -58,23 +58,26 @@ export default abstract class PlayerState extends State {
update(deltaT: number): void { update(deltaT: number): void {
// Do gravity
if (this.positionTimer.isStopped()){ if (this.positionTimer.isStopped()){
this.emitter.fireEvent(Player_Events.PLAYER_MOVE, {position: this.owner.position.clone()}); this.emitter.fireEvent(Player_Events.PLAYER_MOVE, {position: this.owner.position.clone()});
this.positionTimer.start(); this.positionTimer.start();
} }
if(InputWrapper.isDashJustPressed()){
this.doDash();
}
if (!PlayerState.dashTimer.isStopped()) {
this.parent.velocity.x = (<Sprite>this.owner).invertX ? -800 : 800;
}
if (InputWrapper.getState() === GameState.GAMING) { if (InputWrapper.getState() === GameState.GAMING) {
// Do gravity
(<AnimatedSprite>this.parent.owner).animation.resume(); (<AnimatedSprite>this.parent.owner).animation.resume();
this.parent.velocity.y += this.gravity*deltaT; this.parent.velocity.y += this.gravity*deltaT;
// Do dash
if(InputWrapper.isDashJustPressed()){
this.doDash();
}
if (!PlayerState.dashTimer.isStopped()) {
this.parent.velocity.x = (<Sprite>this.owner).invertX ? -800 : 800;
this.parent.velocity.y = 0;
}
this.owner.move(this.parent.velocity.scaled(deltaT)); this.owner.move(this.parent.velocity.scaled(deltaT));
} }
else { else {