-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPlayer.js
More file actions
118 lines (93 loc) · 3.03 KB
/
Player.js
File metadata and controls
118 lines (93 loc) · 3.03 KB
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
var player;
class Player {
constructor() {
//load phase
scene.load.spritesheet("dino", "assets/CC0/characters.png", {
frameWidth: 32,
frameHeight: 32
});
this.keys = makeKeys(['w', 'a', 's', 'd', 'j']);
var spaceBar = scene.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.SPACE);
this.keys.push(spaceBar);
this.keys.SPACE = spaceBar;
this.drag = 300;
this.maxVelocityX = 180;
this.cursors = scene.input.keyboard.createCursorKeys();
}
addPhysics() {
player = scene.physics.add.sprite(100, 428, "dino");
this.sprite = player;
console.log("add physics player");
player.setMaxVelocity(this.maxVelocityX, 1000);
player.setDragX(this.drag);
player.setSize(16, 30);
player.setCollideWorldBounds(true);
for (let i = 0; i < animations.length; i++) {
const animation = animations[i];
console.log(player.anims.create(animation));
}
scene.input.keyboard.on("keyup", this.onKeyUp.bind(this));
}
onKeyUp(event) {
if (event.keyCode == Phaser.Input.Keyboard.KeyCodes.J) {
this.swap = true;
}
}
cleanPhysics(){
this.swap = false;
}
updatePhysics() {
var onFloor;
if (player.body.onFloor()) {
player.setDragX(this.drag);
onFloor = true;
} else {
onFloor = false;
player.setDragX(0);
}
let downKeys = getKeysDown(this.keys);
let up = false;
let down = false;
let left = false;
let right = false;
let keys = this.keys;
for (var i in downKeys) {
switch (downKeys[i]) {
case keys.w:
case keys.SPACE:
console.log('Space down')
up = true;
break;
case keys.a:
left = true;
case keys.d:
right = true;
case keys.s:
down = true;
default:
break;
}
}
if (this.swap){
scene.tilemap.swapLayers();
}
let cursors = this.cursors;
if (cursors.left.isDown || left) {
let dragBonus = onFloor && player.body.velocity.x > 0 ? -this.drag : 0;
player.setAccelerationX(-180 + dragBonus);
player.anims.play('walk', true);
player.flipX = true;
} else if (cursors.right.isDown || right) {
let dragBonus = onFloor && player.body.velocity.x < 0 ? this.drag : 0;
player.setAccelerationX(180 + dragBonus);
player.play('walk', true);
player.flipX = false;
} else {
player.setAccelerationX(0);
player.stop();
}
if ((cursors.up.isDown || up) && player.body.onFloor()) {
player.setVelocityY(-170);
}
}
}