Phaser笔记-scene中的preload、create、update、player、键盘控制

news2024/12/25 9:10:14

一般phaser最简单的配置文件如下:

let config = {
        type: Phaser.AUTO,
        width: 800,
        height:600,
        scene: {
            preload: preload,
            create: create,
            update: update
        },
        physics:{
            default: 'arcade',
            arcade: {
                gravity: { y: 300},
                debug: false
            }
        }
    };

其中scene有3个函数:preload、create、update

preload:是在create函数前调用的,一般用于资源的加载;

create:preload完成后,就会调用到这函数,这个函数一般用于构造界面,关联玩家键盘,游戏大部分逻辑事件等等等;

update:会按周期进行调用,一般用于键盘控制玩家,玩家坐标更新等。

下面是player键盘控制,首先定义变量:

let player;

create函数中奖player构造成精灵,并且设置好回弹参数以将碰撞属性设置为true:

player = this.physics.add.sprite(100, 450, 'dude');
player.setBounce(0.2);
player.setCollideWorldBounds(true);

如果给出的精灵是这样的:

那么还需要创建动画,方便后边的键盘操作,上面的精灵是个横版的图,左边4幅是左,中间那一幅是停止的,右边4幅是右走。

this.anims.create({

    key: 'left',
    frames: this.anims.generateFrameNumbers('dude', {start: 0, end: 3}),
    frameRate: 10,
    repeat: -1
});

this.anims.create({

    key: 'turn',
    frames: [{key: 'dude', frame: 4}],
    frameRate: 20
});


this.anims.create({

    key: 'right',
    frames: this.anims.generateFrameNumbers('dude', {start: 5, end: 8}),
    frameRate: 10,
    repeat: -1
});

 比如横版游戏中有个platforms,玩家可以站在平台上:

this.physics.add.collider(stars, platforms);

在平台上有些加分道具(如stars),当玩家捡到(重叠)到加分道具会执行对应的回调函数:

this.physics.add.overlap(player, stars, collectStar, null, this);

其中stars是变量,collectStar是回调函数。

同样平台上还会有一些敌人,如果玩家接触到这些敌人也会触发对应的回调函数:

this.physics.add.collider(player, bombs, hitBomb, null, this);

其中hitBomb就是回调函数。

关于键盘首先定义cursor变量:

let cursors;

在create函数中创建光标:

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

在update函数中通过按下不同的键盘干不同的事情:

function update(){

    if(cursors.left.isDown){
    }
    else if(cursors.right.isDown){
    }
    else{
    }

    if(cursors.up.isDown && player.body.touching.down) {
    }

}

分别是左键被按下,右键被按下,跳起一次。

如将玩家(精灵)在不同操作下,设置不同的X,Y轴坐标,以及播放不同的动画。

function update(){

    if(cursors.left.isDown){

        player.setVelocityX(-160);
        player.anims.play('left', true);
    }
    else if(cursors.right.isDown){

        player.setVelocityX(160);
        player.anims.play('right', true);
    }
    else{

        player.setVelocityX(0);
        player.anims.play('turn', true);
    }

    if(cursors.up.isDown && player.body.touching.down) {

            player.setVelocityY(-330);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/424774.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CI570 3BSE001440R1适用于数字功能需求较多的设计

CI570 3BSE001440R1适用于数字功能需求较多的设计 尽管纯硅的CMOS 制程被认为仅适用于数字功能需求较多的设计,而不适用于以模拟电路为主的射频IC 设计,不过历经十几年的努力后,随着CMOS 性能的提升、晶圆代工厂在0.25mm 以下制程技术的配合、…

解决 Docker + selenium + chromedriver + chrome 会出现僵尸进程的问题

一、僵尸进程问题 在docker里,使用selenium爬虫, webdriver quit后,会产生很多僵尸进程。docker run -it -v /home/blackip:/home/blackips/ selenium:1.0python3 linux_black_ip.pytop查看僵尸进程:ps -ef | grep defunct查看…

微服务+springcloud+springcloud alibaba学习笔记【Ribbon的使用】(4/9)

Ribbon的使用 4/91、Ribbon负载均衡1.1 Ribbon简介1.2 Ribbon功能1.3 使用Ribbon:1.3.1 Ribbon常用负载均衡算法1.3.2 使用Ribbon1.3.3 ribbon的轮询算法原理1.3.4 手写一个负载均衡轮询算法1.3.5 启动服务,测试1、Ribbon负载均衡 1.1 Ribbon简介 Spring Cloud Ribbon是基于N…

Nestjs实战干货-概况-管道-Pipes

管道 带上装饰器 Injectable() 并实现了 PipeTransform 接口的类,就是管道。 管道有 2 个典型的应用场景: 数值转换:将输入的参数转换成目标类型,例如,string to number。 数值校验:对输入的参数进行校验…

记一次 MySQL 主从同步异常的排查记录,百转千回

本文主要内容如下: 一、现象 最近项目的测试环境遇到一个主备同步的问题: 备库的同步线程停止了,无法同步主库的数据更改。 备库报错如下: 完整的错误信息: Relay log read failure: Could not parse relay log even…

一文读懂【Git 工作流】

文章目录一、Git分支管理二、Git日志规范三、Git Flow工作流一、Git分支管理 我们在实际工作中会创建很多分支以便于不同场景下的开发,但是如果没有分支规范就会造成分支杂乱,大家往往也搞不清楚某一个分支是在做什么,下面我们就介绍一下我们…

车企围攻整车OS,这张“新王牌”怎么打?

今年2月23日,梅赛德斯--奔驰发布了打造自有操作系统MB.OS的具体计划,该操作系统将在本年代中期随全新梅赛德斯-奔驰模块化架构(MMA)平台推出,预计2025年用户将能体验到它的强大功能。 据悉,基于覆盖芯片到…

YOLOv8运行参数解读

整理来自yolov8官方文档常用的一些命令行参数,官方文档YOLOv8 Docs yolov8命令行的统一运行格式为: yolo TASK MODE ARGS其中主要是三部分传参: TASK(可选) 是[detect、segment、classification]中的一个。如果没有显式传递,YO…

智慧水务软件-科学系统架构-数字化管理

平台概述 柳林智慧水务软件是以物联感知技术、大数据、智能控制、云计算、人工智能、数字孪生、AI算法、虚拟现实技术为核心,以监测仪表、通讯网络、数据库系统、数据中台、模型软件、前台展示、智慧运维等产品体系为支撑,以城市水资源、水生态、水环境…

VGG论文翻译及复现

VGG网络实现:https://blog.csdn.net/weixin_43912621/article/details/127852595 论文地址:https://arxiv.org/abs/1409.1556 VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION 用于大规模图像识别的深度卷积网络 Abstract In t…

Salesforce Admin管理员中文学习教程,如何高效筛选出具有Admin权限的用户!

组织中最常见的错误之一就是拥有太多具有系统管理员简档的用户。不幸的是,这在某些行业中非常普遍。 实际上这存在着很大的潜在风险。拥有这些权限的用户可能会暴露、窃取或删除组织中的数据,甚至影响到其他用户。防止过多的管理员访问权限是保护Salesf…

基于Python机器学习、深度学习技术提升气象、海洋、水文领域实践应用能力

目录 专题一、Python软件的安装及入门 专题二、气象常用科学计算库 专题三、气象海洋常用可视化库 专题四、爬虫和气象海洋数据 专题五、气象海洋常用插值方法 专题六、机器学习基础理论和实操 专题七、机器学习的应用实例 专题八、深度学习基础理论和实操 专题九、深…

摸鱼也可以效率翻倍:Python 统计 gitlab 代码量,定量统计发给领导

嗨害大家好鸭!我是爱摸鱼的芝士❤ 一、确定需求 需求是公司大领导想要了解每周研发提交的代码量。 因为研发人员比较多, 想着用 python 做个自动化, 定时统计代码量并发送邮件给领导。 二、统计gitlab代码 首先安装第三方库python-gitlab&…

如何提升智能文档处理识别精度?合合信息“版面分析”实现新突破

春季是繁忙的播种季,学生党迎来了开学季和紧张的研究生复试,职场人士也需要处理新签业务带来的大量不同类型的文件,比如合同、发票、档案等。这些文件在被拍照、扫描成电子文档的过程中,时常存在漏字、错位现象。究其原因&#xf…

kali的下载与安装(VM虚拟机)

目录 一、介绍 二、下载安装 (一)官网下载kali (二)官网下载VM虚拟机 (三)安装VM虚拟机 (三)VM虚拟机里面安装kali系统 一、介绍 (1)Kali Linux是一种基…

基于Chatbot UI 实现ChatGPT对话-V1.0

基于Chatbot UI 实现ChatGPT对话-V1.0 前端基于开源项目:chatbot-ui进行二次开发,感兴趣的小伙伴可以自行研究。 本项目搭建初衷:在无法科学上网的情况下,实现ChatGPT对话。还有规避官方聊天时,长时间无链接导致的问题…

“GPT全家桶”,喂不饱商汤科技

加码追风大模型,终究没能让商汤科技找回投资者们的信心。 4月10日,商汤发布了“日日新SenseNova”大模型体系,且一口气展示了多个产品,有类ChatGPT产品“商量”(SenseChat)、与Midjourney画风一致的秒画平台…

语句覆盖率\条件覆盖率\路径覆盖率\分支覆盖率的区别您知道吗

代码覆盖率 代码覆盖率是一种度量,它描述了程序源代码已经过测试的程度,它可以帮助我们评估测试执行的效率, 简单来理解代码覆盖率就是单元测试中代码执行量与代码总量之间的比率。代码覆盖率主要包括语句覆盖率、分支覆盖率、条件覆盖率和路…

【Linux】实现守护进程 | 以tcpServer为例

本文首发于 慕雪的寒舍 本文将以tcp服务器代码为基本,讲述如何将进程守护进程化,后台运行 1.守护进程 所谓守护进程,就是和其他进程没有关系的进程;其独立运行于系统后台,除非自己退出或收到信号终止,否则…

逆向-还原代码之(*point)[4]和char *point[4] (Arm 64)

// source code #include <stdio.h> #include <string.h> #include <stdlib.h> /* * char (*point)[4] // 数组指针。 a[3][4] // 先申明二维数组,用它来指向这个二维数组 * char *point[4] // 指针数组。 a[4][5] // 一连串的指针…