Spaces:
Running
Running
File size: 1,607 Bytes
c679a93 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
export class Player extends Phaser.Physics.Arcade.Sprite {
constructor(scene, playerId, x = 200, y = 200, dummy = false) {
super(scene, x, y, '')
scene.add.existing(this)
scene.physics.add.existing(this)
this.scene = scene
this.prevX = -1
this.prevY = -1
this.dead = false
this.prevDead = false
this.playerId = playerId
this.move = {}
this.setDummy(dummy)
this.body.setSize(32, 48)
this.prevNoMovement = true
this.setCollideWorldBounds(true)
scene.events.on('update', this.update, this)
}
setDummy(dummy) {
if (dummy) {
this.body.setBounce(1)
this.scene.time.addEvent({
delay: Phaser.Math.RND.integerInRange(45, 90) * 1000,
callback: () => this.kill()
})
} else {
this.body.setBounce(0)
}
}
kill() {
this.dead = true
this.setActive(false)
}
revive(playerId, dummy) {
this.playerId = playerId
this.dead = false
this.setActive(true)
this.setDummy(dummy)
this.setVelocity(0)
}
setMove(data) {
let int = parseInt(data, 36)
let move = {
left: int === 1 || int === 5,
right: int === 2 || int === 6,
up: int === 4 || int === 6 || int === 5,
none: int === 8
}
this.move = move
}
update() {
if (this.move.left) this.setVelocityX(-160)
else if (this.move.right) this.setVelocityX(160)
else this.setVelocityX(0)
if (this.move.up && this.body.onFloor()) this.setVelocityY(-550)
}
postUpdate() {
this.prevX = this.x
this.prevY = this.y
this.prevDead = this.dead
}
}
|