@matematrolii/sketchbook
Version:
3D matematrolii playground built on three.js and cannon.js
41 lines (32 loc) • 1.13 kB
text/typescript
import { CharacterStateBase, JumpIdle, Walk, Pick } from "./_stateLibrary";
import { ICharacterState } from "../../interfaces/ICharacterState";
import { Character } from "../Character";
export class Idle extends CharacterStateBase implements ICharacterState {
constructor(character: Character) {
super(character);
this.character.velocitySimulator.damping = 0.6;
this.character.velocitySimulator.mass = 10;
this.character.setArcadeVelocityTarget(0);
this.playAnimation("idle", 0.1);
}
public update(timeStep: number): void {
super.update(timeStep);
this.fallInAir();
}
public onInputChange(): void {
super.onInputChange();
if (this.character.actions.jump.justPressed) {
this.character.setState(new JumpIdle(this.character));
}
if (this.character.actions.pick.justPressed) {
this.character.setState(new Pick(this.character));
}
if (this.anyDirection()) {
if (this.character.velocity.length() > 0.5) {
this.character.setState(new Walk(this.character));
} else {
this.setAppropriateStartWalkState();
}
}
}
}