company logo
advertisement for deep fried Twinkies


地图


对于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();
					}
				}
			}