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() {} |