refactor: movement API
This commit is contained in:
parent
f84e2331c8
commit
c69909b80a
|
@ -23,7 +23,7 @@ export class Mobile extends decorate(Trait) {
|
|||
|
||||
constructor(entity, params, state) {
|
||||
super(entity, params, state);
|
||||
this.requestedMovement = [0, 0];
|
||||
this.appliedMovement = [0, 0];
|
||||
}
|
||||
|
||||
methods() {
|
||||
|
@ -43,7 +43,11 @@ export class Mobile extends decorate(Trait) {
|
|||
return promise;
|
||||
},
|
||||
|
||||
applyMovement: (movement) => {
|
||||
applyMovement: (vector) => {
|
||||
this.appliedMovement = Vector.add(this.appliedMovement, vector);
|
||||
},
|
||||
|
||||
forceMovement: (movement) => {
|
||||
this.entity.x += movement[0];
|
||||
this.entity.y += movement[1];
|
||||
},
|
||||
|
@ -52,31 +56,31 @@ export class Mobile extends decorate(Trait) {
|
|||
if (!this.isMobile) {
|
||||
return;
|
||||
}
|
||||
this.requestedMovement = Vector.scale(
|
||||
this.entity.applyMovement(Vector.scale(
|
||||
Vector.normalize(vector),
|
||||
this.speed
|
||||
);
|
||||
this.entity.emit('movementRequest', this.requestedMovement);
|
||||
));
|
||||
this.entity.emit('movementRequest', this.appliedMovement);
|
||||
},
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
tick(elapsed) {
|
||||
if (Vector.isZero(this.requestedMovement)) {
|
||||
if (Vector.isZero(this.appliedMovement)) {
|
||||
return;
|
||||
}
|
||||
if (this.entity.is('physical')) {
|
||||
this.entity.applyImpulse(this.requestedMovement);
|
||||
this.entity.applyImpulse(this.appliedMovement);
|
||||
}
|
||||
else {
|
||||
const requestedMovement = Vector.scale(
|
||||
this.requestedMovement,
|
||||
const appliedMovement = Vector.scale(
|
||||
this.appliedMovement,
|
||||
elapsed
|
||||
);
|
||||
this.entity.applyMovement(requestedMovement);
|
||||
this.entity.forceMovement(appliedMovement);
|
||||
}
|
||||
this.requestedMovement = [0, 0];
|
||||
this.appliedMovement = [0, 0];
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user