Now one tween is created and reused to shake a monster when it is
damaged. As a side-effect, the amplitude of shaking is now constant
while it was random in the previous commit.
I decided to use one tween for a monster to avoid creating a memory
leak by leaving unused tweens in memory.
modified: ld40.js
+ function sign(n) {
+ if (n >= 0) { return 1 } else { return -1 };
+ }
class Player extends Phaser.Text {
constructor(x, y) {
class Player extends Phaser.Text {
constructor(x, y) {
this.weapon = new JusticeBlaster(game, this);
this.weapon.bulletSpeed = SPEED_MPROJECTILE;
this.weapon.trackSprite(this);
this.weapon = new JusticeBlaster(game, this);
this.weapon.bulletSpeed = SPEED_MPROJECTILE;
this.weapon.trackSprite(this);
+ this.shaketween = game.add.tween(this).to({ x: this.x + (sign(Math.random() - 0.5)) * 5 }, 10, Phaser.Easing.Sinusoidal.InOut, false, 0, 8, true);
damage(amount) {
super.damage(amount);
damage(amount) {
super.damage(amount);
- if (this.alive) { game.add.tween(this).to({ x: this.x + (Math.random() - 0.5) * 10 }, 10, Phaser.Easing.Sinusoidal.InOut, true, 0, 8, true); }
+ if (this.alive) { this.shaketween.start(); }