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

本文详细介绍使用Phaser.js游戏引擎开发2D游戏的过程,包括物理环境设置、资源预加载、角色创建、按键响应、碰撞检测及动画实现,同时演示如何创建动态场景,如移动平台和背景变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天尝试充实前一天的内容,增加场景的变化,增加时间处理。

第一步,搭建框架+准备素材

<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
  <title>万事屋-Phaser.js-Day2</title>
</head>
<body>
  <h1>学习用phaser.js开发游戏-第二天</h1>
  <div id="game"></div>

  <script type="text/javascript" src="../libs/phaser.min.js"></script>
  <script type="text/javascript">
    var game = new Phaser.Game(640, 480, Phaser.CANVAS, 'game', { preload: preload, create: create, update: update });

    function init() {
    }

    function preload() {
    }

    function create() {
    }

    function update() {
    }

  </script>
</body>
</html>

第二步,初始化物理环境+预加载图片资源

在 init 方法中添加

game.physics.startSystem(Phaser.Physics.ARCADE);
game.physics.arcade.gravity.y = 800;

在 preload 方法中添加

game.load.image('background', 'assets/background.png');
game.load.image('grass-platform', 'assets/grass-platform.png');
game.load.image('ice-platform', 'assets/ice-platform.png');
game.load.spritesheet('dude', 'assets/dude.png', 32, 48);

第三步,在场景增加背景图片和台阶

增加背景图片,在 create 方法中添加

this.add.sprite(0, 0, 'background');

创建台阶组并增加台阶

game.platforms = this.add.physicsGroup();
game.platforms.create(0, 64, 'ice-platform');
game.platforms.create(200, 180, 'grass-platform');
game.platforms.create(400, 296, 'ice-platform');
game.platforms.create(600, 412, 'grass-platform');

效果如下

由于有重力环境,台阶默认会掉下来,下面代码用来固定台阶

platforms.setAll('body.allowGravity', false);
platforms.setAll('body.immovable', true);

第四步,创建角色+按键响应+碰撞事件

与第一天的方式一样,create 方法中添加

player = game.add.sprite(320, 432, 'dude');
game.physics.arcade.enable(player);

player.body.collideWorldBounds = true;
player.body.setSize(20, 32, 5, 16);

player.animations.add('left', [0, 1, 2, 3], 10, true);
player.animations.add('turn', [4], 20, true);
player.animations.add('right', [5, 6, 7, 8], 10, true);

game.cursors = game.input.keyboard.createCursorKeys();

update 方法中添加

game.physics.arcade.collide(player, platforms, onCollided, null, this);
var standing = player.body.blocked.down || player.body.touching.down;
player.body.velocity.x = 0;

if (game.cursors.left.isDown) {
  player.body.velocity.x = -200;
  player.play('left');
}
else if (game.cursors.right.isDown) {
  player.body.velocity.x = 200;
  player.play('right');
}
else {
  player.animations.stop();
}

if (standing && game.cursors.up.isDown && game.time.time > jumpTimer) {
    player.body.velocity.y = -500;
    jumpTimer = game.time.time + 750;
}

第五步,让台阶动起来+增加不同台阶的效果,让冰台阶变滑

在 create 方法中添加

platforms.setAll('body.velocity.x', 100);

在 onCollide 方法中添加

if (platform.key === 'ice-platform') {
  player.body.x -= platform.body.x - platform.body.prev.x;
}

在 update 中添加

platforms.forEach(function(platform) {
  if(platform.body.velocity.x < 0 && platform.x <= -160) platform.x = 640;
  if(platform.body.velocity.x > 0 && platform.x >= 640) platform.x = -160;
}, game);

第六步,让场景更生动

修改create,改变场景背景

game.stage.backgroundColor = '#2f9acc';
sky = this.add.tileSprite(0, 0, 640, 480, 'clouds');
sky.fixedToCamera = true;
game.add.sprite(0, 396, 'trees');

...

game.camera.follow(player);

增加场景高度及各组件的位置,最后在 update 方法中添加,

sky.tilePosition.y = -(game.camera.y * 0.7);

至此,一个可以跟随主角移动的场景就开发完成了

最终效果如下:

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

转载于:https://my.oschina.net/tonglei0429/blog/703819

内容概要:本文档主要介绍了Intel Edge Peak (EP) 解决方案,涵盖从零到边缘高峰的软件配置和服务管理。EP解决方案旨在简化客户的入门门槛,提供一系列工具和服务,包括Edge Software Provisioner (ESP),用于构建和缓存操作系统镜像和软件栈;Device Management System (DMS),用于远程集群或本地集群管理;以及Autonomous Clustering for the Edge (ACE),用于自动化边缘集群的创建和管理。文档详细描述了从软件发布、设备制造、运输、安装到最终设备激活的全过程,并强调了在不同应用场景(如公共设施、工业厂房、海上油井和移动医院)下的具体部署步骤和技术细节。此外,文档还探讨了安全设备注册(FDO)、集群管理、密钥轮换和备份等关键操作。 适合人群:具备一定IT基础设施和边缘计算基础知识的技术人员,特别是负责边缘设备部署和管理的系统集成商和运维人员。 使用场景及目标:①帮助系统集成商和客户简化边缘设备的初始配置和后续管理;②确保设备在不同网络环境下的安全启动和注册;③支持大规模边缘设备的自动化集群管理和应用程序编排;④提供详细的密钥管理和集群维护指南,确保系统的长期稳定运行。 其他说明:本文档是详细描述了Edge Peak技术及其应用案例。文档不仅提供了技术实现的指导,还涵盖了策略配置、安全性和扩展性的考虑,帮助用户全面理解和实施Intel的边缘计算解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值