用 Pixi.js 仿一个 Brotato (二 基础篇)

简介: 用 Pixi.js 仿一个 Brotato

b2eea708c5a76a3deda63969ed29afb.png

系列文章:

前言

上一篇已经简单的介绍了 PixiJS 和整个游戏的流程设计,本节就开始带大家一起学习 PixiJS 上手做一个简单的动画效果,为后续游戏开发打好基础

关于 PixiJS

89554586a3a113e1310313eb7b750be.png

PixiJS官网

整个站点都是纯英文,这对一些英语不好的小伙伴入门可能是一个阻碍,不过问题也不大,大部分功能使用其实也是日常常用的单词,硬着头皮连蒙带猜基本八九不离十,事后还是蛮有成就感的,大家就当做了个英语测验吧

安装 PixiJS

  • 使用 npm

npm install pixi.js

  • 外链 (码上掘金引入推荐)
https://pixijs.download/v7.0.2/pixi.min.js
复制代码

Pixi.Js 的应用和舞台

首先我们需要绘制一个游戏区域,充当我们后续填充游戏元素的容器,在 Pixi.js 中,元素的管理是树状的结构,根元素是应用Application,下一级就是舞台 stage,可以理解为根元素下的根容器,接下来的所有可见游戏元素,都需要挂载在舞台下面,本节会以官网的一个案例入手,带大家认识这些对象属性的作用

创建应用 Application

import * as PIXI from 'pixi.js'
const config = {
    width: 800,
    height: 600,
    background: '#1099bb'
}
const app = new PIXI.Application(config)
document.body.appendChild(app.view)
复制代码

c66b74909de40e5afb444bfa08af9b5.png

这时浏览器上就会显示我们的舞台了,后面我们的任务就是一步一步的丰富这个舞台

创建容器 Container

const container = new PIXI.Container()
app.stage.addChild(container)
复制代码

顾名思义容器是存放我们元素的载体,一般如果场景比较多的时候,使用容器进行切换会比较方便,如果内容比较简单,直接把元素添加到舞台 stage 效果也是一样的

创建纹理 Texture

const texture = PIXI.Texture.from('https://pixijs.io/examples/examples/assets/bunny.png')
复制代码

我们应用所用到的各种图片资源都需要使用纹理来加载,然后在精灵(Sprite)中调用

创建精灵 Sprite

const bunny = new PIXI.Sprite(texture)
container.addChild(bunny)
复制代码

1da75ac873ebaafd573435983ce3968.png

这时右上角就可以看到我们图片里的小兔子了,精灵 Sprite 是我们应用各种元素的载体,我们内容的展示,位置,运动都需要通过操作精灵实现

修改位置 Position

// Move container to the center
// container.x = app.screen.width / 2
// container.y = app.screen.height / 2
container.position.set(app.screen.width / 2, app.screen.height / 2)
复制代码

移动位置的操作是通过修改 (x, y) 的坐标值实现的,也可以使用 Position.set 方法修改,比如我们要把小动物移动舞台中间,可以通过移动容器(小动物是添加在容器上),或者直接修改小动物的坐标,这里我们直接移动容器

修改锚点 Anchor

进行上面操作后会发现小动物不怎么居中,这是因为元素的默认起始位置是(0,0)而不是自身的中心,我们一般可以通过设置锚点来实现居中效果

bunny.anchor.set(0.5)
复制代码

b7ebbf63003406abe22ff903bba5b2b.png

加点动画 Ticker

PixiJS 提供了一个定时器 ticker 来帮助我们实现帧动画,只要我们把方法传进去,它就会按一定帧频刷新舞台,从而达到动画效果

例如这里我们做一个小动物的旋转

app.ticker.add((delta) => {
    // rotate the container!
    // use delta to create frame-independent transform
    container.rotation -= 0.01 * delta;
})
复制代码

b7eb46cf6743d5c2290b6282de413b9.png

这时我们就可以看到小动物转动起来啦 ^-^~!

好了,本节我们把 PixiJS 的简单操作都过了一遍,下一节,我们就要用上这些操作,来实现我们游戏的功能了,敬请大家持续关注

水果兄弟 BroFruit(仿 Brotato) - 码上掘金 (juejin.cn)

系列文章:

相关文章
|
移动开发 前端开发 JavaScript
|
3月前
JS+CSS3文章内容背景黑白切换源码
JS+CSS3文章内容背景黑白切换源码是一款基于JS+CSS3制作的简单网页文章文字内容背景颜色黑白切换效果。
34 0
|
3月前
|
JavaScript 前端开发
JavaScript中的原型 保姆级文章一文搞懂
本文详细解析了JavaScript中的原型概念,从构造函数、原型对象、`__proto__`属性、`constructor`属性到原型链,层层递进地解释了JavaScript如何通过原型实现继承机制。适合初学者深入理解JS面向对象编程的核心原理。
50 1
JavaScript中的原型 保姆级文章一文搞懂
|
6月前
|
JavaScript 前端开发
JS:一篇文章带你搞懂什么是异步
JS:一篇文章带你搞懂什么是异步
|
7月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
196 4
|
7月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp宿舍管理系统的附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp宿舍管理系统的附带文章源码部署视频讲解等
108 3
|
7月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的家政平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的家政平台附带文章源码部署视频讲解等
89 3
|
7月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
138 2
|
7月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的宠物援助平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的宠物援助平台附带文章源码部署视频讲解等
107 4
|
7月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的宠物医院系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的宠物医院系统附带文章源码部署视频讲解等
81 2

热门文章

最新文章

  • 1
    当面试官再问我JS闭包时,我能答出来的都在这里了。
    49
  • 2
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    29
  • 3
    Node.js 中实现多任务下载的并发控制策略
    34
  • 4
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    26
  • 5
    【JavaScript】深入理解 let、var 和 const
    49
  • 6
    【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
    47
  • 7
    【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
    57
  • 8
    【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
    57
  • 9
    如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
    72
  • 10
    【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
    57