Skip to content

Commit d2506dd

Browse files
committed
New tilemap ray casting example + bounce. Also fixed sci-fly example.
1 parent 017a017 commit d2506dd

4 files changed

Lines changed: 228 additions & 19 deletions

File tree

examples/tilemaps/map bounce.js

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
2+
var game = new Phaser.Game(800, 600, Phaser.CANVAS, 'phaser-example', { preload: preload, create: create, update: update, render: render });
3+
4+
function preload() {
5+
6+
game.load.tilemap('map', 'assets/tilemaps/maps/collision_test.json', null, Phaser.Tilemap.TILED_JSON);
7+
game.load.image('ground_1x1', 'assets/tilemaps/tiles/ground_1x1.png');
8+
game.load.image('phaser', 'assets/sprites/phaser-dude.png');
9+
10+
}
11+
12+
var map;
13+
var layer;
14+
var cursors;
15+
var sprite;
16+
17+
function create() {
18+
19+
map = game.add.tilemap('map');
20+
21+
map.addTilesetImage('ground_1x1');
22+
23+
layer = map.createLayer('Tile Layer 1');
24+
25+
layer.resizeWorld();
26+
27+
map.setCollisionBetween(1, 12);
28+
29+
// layer.debug = true;
30+
31+
sprite = game.add.sprite(260, 70, 'phaser');
32+
33+
game.physics.enable(sprite);
34+
35+
sprite.body.bounce.set(0.8);
36+
sprite.body.tilePadding.set(32);
37+
38+
game.camera.follow(sprite);
39+
40+
game.physics.arcade.gravity.y = 200;
41+
42+
cursors = game.input.keyboard.createCursorKeys();
43+
44+
}
45+
46+
function update() {
47+
48+
game.physics.arcade.collide(sprite, layer);
49+
50+
// Un-comment these to gain full control over the sprite
51+
// sprite.body.velocity.x = 0;
52+
// sprite.body.velocity.y = 0;
53+
54+
if (cursors.up.isDown)
55+
{
56+
sprite.body.velocity.y = -200;
57+
}
58+
else if (cursors.down.isDown)
59+
{
60+
sprite.body.velocity.y = 200;
61+
}
62+
63+
if (cursors.left.isDown)
64+
{
65+
sprite.body.velocity.x = -200;
66+
}
67+
else if (cursors.right.isDown)
68+
{
69+
sprite.body.velocity.x = 200;
70+
}
71+
72+
}
73+
74+
function render() {
75+
76+
// game.debug.body(sprite);
77+
78+
}

examples/tilemaps/sci fly.js

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
var game = new Phaser.Game(800, 600, Phaser.AUTO, 'phaser-example', { preload: preload, create: create, update: update });
2+
var game = new Phaser.Game(800, 600, Phaser.AUTO, 'phaser-example', { preload: preload, create: create, update: update, render: render });
33

44
function preload() {
55

@@ -29,8 +29,6 @@ function create() {
2929
// Basically this sets EVERY SINGLE tile to fully collide on all faces
3030
map.setCollisionByExclusion([7, 32, 35, 36, 47]);
3131

32-
// layer.debug = true;
33-
3432
layer.resizeWorld();
3533

3634
cursors = game.input.keyboard.createCursorKeys();
@@ -43,8 +41,15 @@ function create() {
4341
emitter.gravity = 150;
4442
emitter.bounce.setTo(0.5, 0.5);
4543

46-
sprite = game.add.sprite(200, 70, 'phaser');
47-
sprite.anchor.setTo(0.5, 0.5);
44+
sprite = game.add.sprite(300, 90, 'phaser');
45+
sprite.anchor.set(0.5);
46+
47+
game.physics.enable(sprite);
48+
49+
// Because both our body and our tiles are so tiny,
50+
// and the body is moving pretty fast, we need to add
51+
// some tile padding to the body. WHat this does
52+
sprite.body.tilePadding.set(32, 32);
4853

4954
game.camera.follow(sprite);
5055

@@ -60,34 +65,40 @@ function particleBurst() {
6065

6166
function update() {
6267

63-
game.physics.collide(sprite, layer);
64-
game.physics.collide(emitter, layer);
68+
game.physics.arcade.collide(sprite, layer);
69+
game.physics.arcade.collide(emitter, layer);
6570

6671
sprite.body.velocity.x = 0;
6772
sprite.body.velocity.y = 0;
6873

6974
if (cursors.up.isDown)
7075
{
71-
sprite.body.velocity.y = -150;
76+
sprite.body.velocity.y = -200;
7277
particleBurst();
7378
}
7479
else if (cursors.down.isDown)
7580
{
76-
sprite.body.velocity.y = 150;
81+
sprite.body.velocity.y = 200;
7782
particleBurst();
7883
}
7984

8085
if (cursors.left.isDown)
8186
{
82-
sprite.body.velocity.x = -150;
87+
sprite.body.velocity.x = -200;
8388
sprite.scale.x = -1;
8489
particleBurst();
8590
}
8691
else if (cursors.right.isDown)
8792
{
88-
sprite.body.velocity.x = 150;
93+
sprite.body.velocity.x = 200;
8994
sprite.scale.x = 1;
9095
particleBurst();
9196
}
9297

9398
}
99+
100+
function render() {
101+
102+
// game.debug.body(sprite);
103+
104+
}
Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
2+
var game = new Phaser.Game(800, 600, Phaser.CANVAS, 'phaser-example', { preload: preload, create: create, update: update, render: render });
3+
4+
function preload() {
5+
6+
game.load.tilemap('map', 'assets/tilemaps/maps/collision_test.json', null, Phaser.Tilemap.TILED_JSON);
7+
game.load.image('ground_1x1', 'assets/tilemaps/tiles/ground_1x1.png');
8+
game.load.image('phaser', 'assets/sprites/phaser-dude.png');
9+
10+
}
11+
12+
var map;
13+
var layer;
14+
var cursors;
15+
var sprite;
16+
var line;
17+
var tileHits = [];
18+
var plotting = false;
19+
20+
function create() {
21+
22+
line = new Phaser.Line();
23+
24+
map = game.add.tilemap('map');
25+
26+
map.addTilesetImage('ground_1x1');
27+
28+
layer = map.createLayer('Tile Layer 1');
29+
30+
layer.resizeWorld();
31+
32+
map.setCollisionBetween(1, 12);
33+
34+
layer.debug = true;
35+
36+
sprite = game.add.sprite(260, 70, 'phaser');
37+
38+
game.physics.enable(sprite);
39+
40+
game.camera.follow(sprite);
41+
42+
cursors = game.input.keyboard.createCursorKeys();
43+
44+
var help = game.add.text(10, 10, 'Arrows to move, click and drag to cast a ray', { font: '16px Arial', fill: '#ffffff' });
45+
help.fixedToCamera = true;
46+
47+
game.input.onDown.add(startLine, this);
48+
game.input.onUp.add(raycast, this);
49+
50+
}
51+
52+
function startLine(pointer) {
53+
54+
if (tileHits.length > 0)
55+
{
56+
for (var i = 0; i < tileHits.length; i++)
57+
{
58+
tileHits[i].debug = false;
59+
}
60+
61+
layer.dirty = true;
62+
}
63+
64+
line.start.set(pointer.worldX, pointer.worldY);
65+
66+
plotting = true;
67+
68+
}
69+
70+
function raycast(pointer) {
71+
72+
line.end.set(pointer.worldX, pointer.worldY);
73+
74+
tileHits = layer.getRayCastTiles(line, 4, false, false);
75+
76+
if (tileHits.length > 0)
77+
{
78+
// Just so we can visually see the tiles
79+
for (var i = 0; i < tileHits.length; i++)
80+
{
81+
tileHits[i].debug = true;
82+
}
83+
84+
layer.dirty = true;
85+
}
86+
87+
plotting = false;
88+
89+
}
90+
91+
function update() {
92+
93+
if (plotting)
94+
{
95+
line.end.set(game.input.activePointer.worldX, game.input.activePointer.worldY);
96+
}
97+
98+
game.physics.arcade.collide(sprite, layer);
99+
100+
sprite.body.velocity.x = 0;
101+
sprite.body.velocity.y = 0;
102+
103+
if (cursors.up.isDown)
104+
{
105+
sprite.body.velocity.y = -200;
106+
}
107+
else if (cursors.down.isDown)
108+
{
109+
sprite.body.velocity.y = 200;
110+
}
111+
112+
if (cursors.left.isDown)
113+
{
114+
sprite.body.velocity.x = -200;
115+
}
116+
else if (cursors.right.isDown)
117+
{
118+
sprite.body.velocity.x = 200;
119+
}
120+
121+
}
122+
123+
function render() {
124+
125+
game.debug.geom(line);
126+
127+
}

examples/wip/tilemap new 1.js

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ function preload() {
66
game.load.tilemap('map', 'assets/tilemaps/maps/collision_test.json', null, Phaser.Tilemap.TILED_JSON);
77
game.load.image('ground_1x1', 'assets/tilemaps/tiles/ground_1x1.png');
88
game.load.image('phaser', 'assets/sprites/phaser-dude.png');
9-
// game.load.image('phaser', 'assets/sprites/phaser-ship.png');
109

1110
}
1211

@@ -48,7 +47,7 @@ function update() {
4847

4948
game.physics.arcade.collide(sprite, layer);
5049

51-
sprite.body.velocity.x = 0;
50+
// sprite.body.velocity.x = 0;
5251
// sprite.body.velocity.y = 0;
5352

5453
if (cursors.up.isDown)
@@ -73,12 +72,6 @@ function update() {
7372

7473
function render() {
7574

76-
// game.debug.text(sprite.body.deltaAbsX(), 32, 32);
77-
// game.debug.text(sprite.body.deltaAbsY(), 32, 64);
78-
79-
// game.debug.text(sprite.body.deltaX(), 400, 32);
80-
// game.debug.text(sprite.body.deltaY(), 400, 64);
81-
8275
// game.debug.body(sprite);
8376

8477
}

0 commit comments

Comments
 (0)