地图
对于Tiled的学习并不好,所以只能是简单的做一个地图,两个层
tilemap 为什么HTML里的代码总会丢失呢?
接下来,把人物加进去
人在层上,并且没有障碍,还得加东西
加了碰撞后居然没有碰撞检测?
换一个看看:
再改一个看看:
var game = new Phaser.Game(640, 480, Phaser.AUTO, 'container', state); function state() { var man; var jz; var cursors; var dm; this.init = function() { game.scale.pageAlignHorizontally = true; //水平居中 game.scale.pageAlignVertically = true; //垂直居中 game.stage.setBackgroundColor(0xffffee); } this.preload = function() { game.load.tilemap('mario_map', 'asset/dom4.json', null, Phaser.Tilemap.TILED_JSON); game.load.image('mario', 'asset/tiled/zh.png'); game.load.spritesheet('man', 'asset/zgf.png', 32, 48); } this.create = function() { var map = game.add.tilemap('mario_map'); //创建地图Map, map.addTilesetImage('zh', 'mario'); //第一个参数是用TILED创建地图时那个瓦片图片的名字,第二个参数是你在这个游戏中加载进来的瓦片图片的KEY var db = map.createLayer('db'); dm = map.createLayer('qw'); //创建层,这个层就是你在TILED中层的名字 za = map.createLayer('za'); man = game.add.sprite(48, 0, 'man'); //jz = map.createLayer('jz'); //创建层,这个层就是你在TILED中层的名字 dm.resizeWorld(); //调整世界大小为地图大小 //设置需要碰撞的瓦片 map.setCollisionBetween(24, 32, true, dm); //map.setCollisionBetween(107, 109,true,jz); //进行范围设置(开始索引,终止索引,布尔值 是否进行碰撞检测,在哪个层进行检测) //map.setCollision(141, true, dmzs); //使用方法:({瓦片索引,可以是一个,也可以是组},布尔值 是否进行碰撞检测,在哪个层进行检测) //map.setCollision(142, true, dmzs); //map.setCollision([17,18,237,251]); //map.setCollision([5,6],true); man.animations.add('qian', [0, 1, 2, 3]); man.animations.add('left', [4, 5, 6, 7]); man.animations.add('you', [8, 9, 10, 11]); man.animations.add('hou', [12, 13, 14, 15]); game.physics.startSystem(Phaser.Physics.ARCADE); //物理引擎 game.physics.enable(man); //为游戏人物启用物理引擎 game.physics.arcade.gravity.y = 250; //重力 man.body.bounce.y = 0.2; //碰撞后弹回的设置 game.camera.follow(man); //摄像机跟随人物 cursors = game.input.keyboard.createCursorKeys(); //键盘控制快捷方法 } this.update = function() { game.physics.arcade.collide(man, dm); //碰撞检测 //man.body.velocity.x = 0; /*if (cursors.up.isDown) { man.play('hou', 5, true); if (man.y > 0) { man.body.y -= 2; } } else if (cursors.down.isDown) { man.play('qian', 5, true); if (man.y < 480-48) { man.body.y += 2; } } else if (cursors.left.isDown) { man.play('left', 5, true); if (man.x > 0) { man.body.x -= 2; } } else if (cursors.right.isDown) { man.play('you', 5, true); if (man.x < 640-32) { man.body.x += 2; } } else { man.animations.stop(); }*/ if (cursors.up.isDown) { if (man.body.onFloor()) { man.body.velocity.y = -250; } } if (cursors.left.isDown) { man.play('left', 5, true); man.body.x -= 2; } else if (cursors.right.isDown) { man.play('you', 5, true); man.body.x += 2; } else { man.animations.stop(); } } }