侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

学习 Phaser.js HTML5游戏开发-DAY1

2024-05-13 星期一 / 0 评论 / 0 点赞 / 95 阅读 / 4423 字

Phaser 是目前 Github 上最受欢迎的 H5 游戏框架。 官网地址:http://phaser.io Github:https://github.com/photonstorm/phaser

Phaser 是目前 Github 上最受欢迎的 H5 游戏框架。

官网地址:http://phaser.io

Github: https://github.com/photonstorm/phaser

第一天目标,准备 Phaser 的开发环境,跑起入门实例

1.准备环境

下载 Phaser.js

https://github.com/photonstorm/phaser/blob/master/build/phaser.min.js

2. day1.html

<!doctype html><html><head><meta charset="utf-8"><title>万事屋-Phaser.js-Day1</title></head><body><script type="text/javascript" src="../libs/phaser.min.js"></script><script type="text/javascript" src="day1.js"></script></body></html>

3. day1.js

// 1. 声明游戏对象 'game'// 前两个参数,800, 600 为游戏界面尺寸// 第三个参数可以为 Phaser.CANVAS, Phaser.WEBGL, Phaser.AUTO 代表浏览器渲染模式,AUTO = ? WEBGL : CANVAS// 第四个参数代表 html 中的 DOM 元素,非必需// 第五个参数为监听器var game = new Phaser.Game(800, 600, Phaser.AUTO, '', { preload: preload, create: create, update: update });// 3. 定义全局变量var platforms;var player;var cursors;var stars;var score = 0;var scoreText;function preload() {	// 2. 预加载资源,第一个参数是Key,第二参数是资源路径	game.load.image('sky', '../assets/sky.png');	game.load.image('ground', '../assets/platform.png');	game.load.image('star', '../assets/star.png');	// 将资源加载为Sprite Sheet,每32*48为一个Sprite	game.load.spritesheet('dude', '../assets/dude.png', 32, 48);}function create() {	// 4. 配置物理环境	game.physics.startSystem(Phaser.Physics.ARCADE);	// 5. 设置背景	// 前两个参数代表位置	// 第三个参数是添加的对象,在2中定义	game.add.sprite(0, 0, 'sky');	// 6. 创建元素组,比如石块和地面	platforms = game.add.group();	// 7. 使其可碰撞	platforms.enableBody = true;	// 8. 创建地面, 前两个参数代表位置	var ground = platforms.create(0, game.world.height - 64, 'ground');	// 9. 适应屏幕大小	ground.scale.setTo(2, 2);	// 10. 固定位置	ground.body.immovable = true;	// 11. 再创建两个台阶	var ledge = platforms.create(400, 400, 'ground');	ledge.body.immovable = true;	ledge = platforms.create(-150, 250, 'ground');	ledge.body.immovable = true;	// 12. 创建主人公	player = game.add.sprite(32, game.world.height - 150, 'dude');	game.physics.arcade.enable(player);	// 13. 增加物理属性,比如弹力,重力	player.body.bounce.y = 0.2;	player.body.gravity.y = 300;	player.body.collideWorldBounds = true;	// 14. 设置动作,左右移动	player.animations.add('left', [0, 1, 2, 3], 10, true);	player.animations.add('right', [5, 6, 7, 8], 10, true);	// 16. 键盘事件	cursors = game.input.keyboard.createCursorKeys();	stars = game.add.group();    stars.enableBody = true;    // 18. 创建一堆星星    for (var i = 0; i < 12; i++) {        var star = stars.create(i * 70, 0, 'star');        star.body.gravity.y = 60;        star.body.bounce.y = 0.3 + Math.random() * 0.2;    }	// 22. 创建分数标签	scoreText = game.add.text(16, 16, 'score: 0', {fontSize:'32px', fill:'#000'});}function update() {	// 15. 判断碰撞	game.physics.arcade.collide(player, platforms);	// 19. 支持碰撞    game.physics.arcade.collide(stars, platforms);    // 20. 碰撞事件    game.physics.arcade.overlap(player, stars, collectStar, null, this);	// 17. 响应键盘事件    player.body.velocity.x = 0;    if (cursors.left.isDown) {        //  左移        player.body.velocity.x = -150;        player.animations.play('left');    } else if (cursors.right.isDown) {        //  右移        player.body.velocity.x = 150;        player.animations.play('right');    } else {        player.animations.stop();        player.frame = 4;    }    //  跳    if (cursors.up.isDown && player.body.touching.down) {        player.body.velocity.y = -350;    }}function collectStar (player, star) {	// 21. 消灭星星    star.kill();    // 23. 记分    score += 10;    scoreText.text = 'Score: ' + score;}

4. 效果图

演示地址:

http://gintama.vip/examples-phaser/day1.html

广告 广告

评论区