View difference between Paste ID: Gs6xDZc5 and 5XqmV7tm
SHOW: | | - or go back to the newest paste.
1-
// http://phaser.io/examples/v2/tilemaps/csv-map-with-p2
1+
// paste this code into http://phaser.io/examples/v2/tilemaps/csv-map-with-p2
2
3
var game = new Phaser.Game(800, 600, Phaser.CANVAS, 'phaser-example', { preload: preload, create: create, update: update, render: render });
4
5
function preload() {
6
7
    game.load.baseURL = 'http://examples.phaser.io/';
8
    game.load.crossOrigin = 'anonymous';
9
10
    game.load.image('phaser', 'assets/sprites/phaser-dude.png');
11
    game.load.tilemap('map', 'assets/tilemaps/csv/catastrophi_level2.csv', null, Phaser.Tilemap.CSV);
12
    game.load.image('tiles', 'assets/tilemaps/tiles/catastrophi_tiles_16.png');
13
    game.load.image('player', 'assets/sprites/tinycar.png');
14
}
15
16
17
var map;
18
var layer;
19
var cursors;
20
var player;
21
var renderTexture;
22
var renderSprite;
23
var help;
24
var zoom;
25
var mapSize = 400;
26
27
function create() {
28
29
    game.physics.startSystem(Phaser.Physics.P2JS);
30
31
    
32
33
    //  Because we're loading CSV map data we have to specify the tile size here or we can't render it
34
    map = game.add.tilemap('map', 16, 16);
35
36
    //  Now add in the tileset
37
    map.addTilesetImage('tiles');
38
    
39
    //  Create our layer
40
    layer = map.createLayer(0);
41
42
    //  Resize the world
43
    layer.resizeWorld();
44
45
    //  This isn't totally accurate, but it'll do for now
46
    map.setCollisionBetween(54, 83);
47
48
    //  Convert the tilemap layer into bodies. Only tiles that collide (see above) are created.
49
    //  This call returns an array of body objects which you can perform addition actions on if
50
    //  required. There is also a parameter to control optimising the map build.
51
    game.physics.p2.convertTilemap(map, layer);
52
53
    //  Player
54
    player = game.add.sprite(48, 48, 'player');
55
56
    game.physics.p2.enable(player);
57
58
    game.physics.p2.setBoundsToWorld(true, true, true, true, false);
59
60
    game.camera.follow(player);
61
62
    //  Allow cursors to scroll around the map
63
    cursors = game.input.keyboard.createCursorKeys();
64
65
    help = game.add.text(16, 16, 'Arrows to move', { font: '14px Arial', fill: '#ffffff' });
66
    help.fixedToCamera = true;
67
    
68
    zoom = 0.5
69
    
70
    //renderTexture=game.add.renderTexture(200,200,"rt")
71-
    renderTexture=game.add.renderTexture(400,400,"rt")
71+
72
    renderTexture=game.add.renderTexture(mapSize,mapSize,"rt") // render()ing seems to have changed
73
    
74
    renderGroup = game.add.group()
75-
   // renderGroup.x=650
75+
   
76-
   // renderGroup.y=150
76+
77
    
78
    
79
    var bg = game.add.graphics(0,0)
80
    bg.beginFill(0,1)
81
    bg.lineStyle(2, 0xFF0000, 1);
82-
    bg.drawCircle(0,0,200,200)
82+
    bg.drawCircle(0,0,mapSize/2,mapSize/2)
83
    bg.endFill();
84
    renderGroup.add(bg)
85
    
86
    renderSprite=game.add.sprite(0,0,renderTexture)
87-
    renderSprite.scale.set(0.25)
87+
   //renderSprite.scale.set(0.25) // render()ing seems to have changed
88-
    renderSprite.width=200
88+
    renderSprite.width=mapSize * zoom
89-
    renderSprite.height=200
89+
    renderSprite.height=mapSize * zoom
90
91
    
92
    renderSprite.anchor.set(0.5)
93
    
94
    
95
    renderGroup.add(renderSprite)
96
    
97
    var mask = game.add.graphics(0, 0);
98
    //mask.lineStyle(2, 0xFF0000, 1);
99
    mask.beginFill(0xFF0000,0.1)
100-
    mask.drawCircle(0,0,200,200);    
100+
    mask.drawCircle(0,0,mapSize/2,mapSize/2);    
101
    mask.endFill()
102-
    //mask.cacheAsBitmap=true // breaks mask
102+
    //mask.cacheAsBitmap=true // !!!! breaks mask
103
    renderGroup.add(mask)
104
    renderSprite.mask=mask;
105
106
    var outline = game.add.graphics(0, 0);
107
    outline.lineStyle(2, 0xFF0000, 1);
108-
    //outline.beginFill(0xFF0000,0.1)
108+
    outline.drawCircle(0,0,mapSize/2,mapSize/2);    
109-
    outline.drawCircle(0,0,200,200);    
109+
110
    renderGroup.add(outline)
111
112
    // renderGroup.x=650 /// !!!! needs camera offset now since fixed to camera
113
    // renderGroup.y=150
114
    renderGroup.cameraOffset.x=650
115
    renderGroup.cameraOffset.y=150
116
    renderGroup.fixedToCamera=true
117
    renderTexture.render(layer, 0,0,true)
118
119
120
}
121
122
function update() {
123
124
    if (cursors.left.isDown)
125
    {
126
        player.body.rotateLeft(100);
127
    }
128
    else if (cursors.right.isDown)
129
    {
130
        player.body.rotateRight(100);
131
    }
132
    else
133
    {
134
        player.body.setZeroRotation();
135
    }
136
137
    if (cursors.up.isDown)
138
    {
139
        player.body.thrust(400);
140
    }
141
    else if (cursors.down.isDown)
142
    {
143
        player.body.reverse(400);
144
    }
145
146
147
    w = layer.width
148
    h = layer.height
149
    
150-
    layer.setFrame({x:Math.max(0,player.x-game.camera.x)-200,y:Math.max(0,player.y-game.camera.y)-200,width:400,height:400})
150+
151
    layer.setFrame({x:Math.max(0,player.x-game.camera.x)-mapSize/2,y:Math.max(0,player.y-game.camera.y)-mapSize/2,width:mapSize,height:mapSize})
152
    //layer.setFrame({x:player.x, y:player.y, width:400, height:400})
153
    m = new PIXI.Matrix()
154
    renderSprite.angle=-player.angle
155
    // reset layer to original dimensions
156
    renderTexture.render(layer, m, true)
157
    layer.setFrame({x:0, y:0, width:w, height:h})
158
159
}
160-
function render() {
160+
161-
}
161+
function render() {}