Phaser-圆形路径

news2024/11/15 17:38:43

使用 Phaser 创建一个简单的路径动画

Phaser 是一个强大的 HTML5 游戏框架,适合用于开发 2D 游戏。在本文中,我们将展示如何使用 Phaser 创建一个简单的动画示例,其中一个红色的圆沿着椭圆路径移动。该示例将帮助你理解如何在 Phaser 中使用路径和补间动画。

前置准备

首先,确保你已经在项目中引入了 Phaser 库。如果你还没有 Phaser,可以通过以下方式之一引入:

  1. 通过 CDN 引入:

    <script src="https://cdn.jsdelivr.net/npm/phaser@3.55.2/dist/phaser.js"></script>
    
  2. 通过 npm 安装:

    npm install phaser
    

示例代码

下面是完整的示例代码,它创建了一个动画场景,其中一个红色圆圈沿着椭圆路径移动:

class Example extends Phaser.Scene {
    graphics;
    path;
    follower;

    create () {
        // 创建一个图形对象,用于绘制路径和圆
        this.graphics = this.add.graphics();

        // 初始化 follower 对象,包含 t(路径进度)和 vec(当前点的向量)
        this.follower = { t: 0, vec: new Phaser.Math.Vector2() };

        // 创建一个路径对象
        this.path = new Phaser.Curves.Path();

        // 在路径上添加一个椭圆(中心在 (400, 300),半径为 100)
        this.path.add(new Phaser.Curves.Ellipse(400, 300, 100));

        // 创建一个补间动画,让 follower 对象在路径上来回移动
        this.tweens.add({
            targets: this.follower,  // 动画目标
            t: 1,                    // 动画结束时 t 的值(路径进度)为 1
            ease: 'Sine.easeInOut',  // 使用正弦缓动函数
            duration: 4000,          // 动画持续时间 4 秒
            yoyo: true,              // 动画结束后反向播放
            repeat: -1               // 无限循环
        });
    }

    update () {
        // 清空之前绘制的内容
        this.graphics.clear();
        // 设置线条样式(白色,宽度为 2)
        this.graphics.lineStyle(2, 0xffffff, 1);

        // 绘制路径
        this.path.draw(this.graphics);

        // 获取路径上当前进度 t 对应的点的坐标,存储在 follower.vec 中
        this.path.getPoint(this.follower.t, this.follower.vec);

        // 设置填充样式(红色)
        this.graphics.fillStyle(0xff0000, 1);
        // 在路径上当前点的坐标位置绘制一个半径为 12 的圆
        this.graphics.fillCircle(this.follower.vec.x, this.follower.vec.y, 12);
    }
}

// 配置 Phaser 游戏实例
const config = {
    type: Phaser.AUTO,                // 渲染类型(自动选择 WebGL 或 Canvas)
    width: 800,                       // 游戏宽度
    height: 600,                      // 游戏高度
    backgroundColor: '#2a2d2a',       // 背景颜色
    parent: 'phaser-example',         // 父元素 ID,用于将游戏画布添加到该元素中
    scene: Example                    // 使用的场景类
};

// 创建 Phaser 游戏实例
const game = new Phaser.Game(config);

效果图

在这里插入图片描述

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

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

相关文章

Linux用户,用户组,所有者权限分配,sftp用户权限分配

注意以下命令执行需要在root用户下执行 tenant命令切换至root命令 sudo -do root 删除用户信息 1.不删除用户主目录 userdel user_name 2.删除用户主目录 userdel -r user_name usermod命令修改用户账户权限 更改用户名 sudo usermod -l newusername oldusername 更…

Redis】Redis主从复制(二)————主从结构/流程

目录 回顾slaveof 命令断开主从复制关系切换主从复制关系只读网络延迟问题应对措施补充 主从结构一主一从结构问题改进 一主多从结构树形主从主从切换结构 主从复制流程简单来记关于数据同步两个参数replicationidoffset. psync 运行流程全量复制和部分复制全量复制流程&#x…

在镜像中添加Git提交号

文章目录 前言环境介绍思路内核cpuinfo中添加Git提交号修改setup.c获取Git提交号和生成GIT_COMMIT_INFO宏继续修改内核setup.c验证 内核设备树中添加Git提交号修改设备树验证 U-Boot版本号添加Git提交号U-Boot配置修改setlocalversion脚本验证 前言 在镜像中加入Git提交号&…

mysql和redis的双写一致性问题

一&#xff0c;使用方案 在使用redis作为缓存的场景下&#xff0c;我们一般使用流程如下 二&#xff0c;更新数据场景 我们此时修改个某条数据&#xff0c;如何保证mysql数据库和redis缓存中的数据一致呢&#xff1f; 按照常规思路有四种办法&#xff0c;1.先更新mysql数据&a…

计划任务!!!

目录 一、补充 1.1关闭防火墙 1.2安装php 二、计划任务 2.1at一次性计划任务 2.2周期性计划任务&#xff08;crontab&#xff09; 上篇我们学了rpm安装、yum安装还有编译安装。今天我们先补充一下上篇的东西再学习计划任务 一、补充 1.1关闭防火墙 systemctl stop fir…

亚马逊竞品分析之如何查找竞品

初选之后,要对产品进行竞品分析,查找竞品的方法: 1.Best Seller榜单查找 进入到该类目的BS榜单去找跟你选中的产品的竞品 看完BS榜单会找出一部分竞品 这个找相似也可以点击,是插件的一个以图搜图的功能,不过有的时候不太好使,某些同款产品可能搜不到。 Edge浏览器搭…

原生js写table表格固定表头

给表头添加以下属性 table表格写法参考 jquery写表格 手动合并单元格-CSDN博客 jquery写表格&#xff08;带滚动条&#xff09;_row.append($(<td>)-CSDN博客

面试题:什么是线程的上下文切换?

线程的上下文切换是指在操作系统中&#xff0c;CPU从执行一个线程的任务切换到执行另一个线程任务的过程。在现代操作系统中&#xff0c;为了实现多任务处理和充分利用CPU资源&#xff0c;会同时管理多个线程的执行。由于CPU在任意时刻只能执行一个线程&#xff0c;因此需要在这…

LeetCode 算法:螺旋矩阵c++

原题链接&#x1f517;&#xff1a;螺旋矩阵 难度&#xff1a;中等⭐️⭐️ 题目 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&…

西南交通大学【操作系统实验2】

实验目的 本实验要求学生了解什么是信号&#xff0c;掌握软中断的基本原理&#xff1b;掌握中断信号的使用、进程的创建以及系统计时器的使用。通过对本实验的学习&#xff0c;学生能够学会进程的创建方法&#xff0c;更能加深对Linux中的信号机制的认识&#xff0c;并会使用软…

【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt窗口 | 标准对话框 | 消息对话框QMessageBox 文章编号&#xff1a;Q…

基于长短期记忆网络 LSTM 的下一个单词预测

前言 系列专栏:【深度学习&#xff1a;算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域&#xff0c;讨论了各种复杂的深度神经网络思想&#xff0c;如卷积神经网络、循环神经网络、生成对…

Parallels Desktop 19虚拟机助你一机多用

Parallels Desktop 19 mac虚拟机是一款功能强大且易于使用的虚拟化软件&#xff0c;它允许用户在Mac电脑上同时运行Windows、Linux和其他多种操作系统&#xff0c;为用户提供了极大的灵活性和兼容性。 Parallels Desktop 19获取 这款虚拟机软件具有直观易用的界面&#xff0c;…

云动态摘要 2024-06-11

给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 最新优惠与活动 [低至1折]腾讯混元大模型产品特惠 腾讯云 2024-06-06 腾讯混元大模型产品特惠,新用户1折起! 云服务器ECS试用产品续用 阿里云 2024-04-14 云服务器ECS试用产品续用 最新产品更新 云服务器运维监…

您的计算机时间有误

问题 使用 apt update 更新软件时报错&#xff0c;提示 Release 文件已过期。 另外还发现&#xff0c;命令行 Ping 百度是通的&#xff0c;但是通过浏览器无法访问百度网站 解决 浏览器已经有很明确的的提示了&#xff1a;您的计算机时间有误。 所以&#xff0c;同步一下…

【总线】设计fpga系统时,为什么要使用总线?

目录 为什么用总线 为什么选择AMBA 总结 系列文章 【总线】AMBA总线架构的发展历程-CSDN博客 【总线】设计fpga系统时&#xff0c;为什么要使用总线&#xff1f;-CSDN博客 为什么用总线 在FPGA系统设计中&#xff0c;使用总线是为了实现组件间的高效互联与通信&#xff0c…

鸿蒙轻内核A核源码分析系列四(2) 虚拟内存

本文我们来熟悉下OpenHarmony鸿蒙轻内核提供的虚拟内存&#xff08;Virtual memory&#xff09;管理模块。 本文中所涉及的源码&#xff0c;以OpenHarmony LiteOS-A内核为例&#xff0c;均可以在开源站点 https://gitee.com/openharmony/kernel_liteos_a 获取。如果涉及开发板…

超详细十大排序算法

一、排序总结 性能指标&#xff1a;稳定性&#xff0c;时间复杂度&#xff0c;空间复杂度 排序算法的稳定性是指当排序的元素中存在相同的值时&#xff0c;排序算法能够保持它们原先的相对顺序。如果一个排序算法是稳定的&#xff0c;那么在排序后&#xff0c;相同值的元素在原…

uni-admin:基于uni-app与uniCloud的云端管理后台开发神器

随着移动互联网和云计算技术的飞速发展&#xff0c;越来越多的企业和开发者开始寻求一种快速、高效且灵活的解决方案来构建自己的管理后台系统。在这样一个背景下&#xff0c;uni-admin应运而生&#xff0c;它基于uni-app和uniCloud&#xff0c;为开发者提供了一个功能强大、易…

YOLO检测环境安装配置

YOLO介绍 YOLO学习手册&#xff1a;YOLO教程 YOLO [ˈjoʊloʊ]&#xff08;You Only Look Once&#xff09;是一种快速而准确的目标检测算法&#xff0c;由Joseph Redmon等人在2016年提出。YOLO被广泛应用于计算机视觉领域&#xff0c;包括实时视频分析、自动驾驶、安防监控、…