成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一起學 pixijs(三):Sprite

開發(fā) 前端
Sprite 直譯為 “精靈”,是游戲開發(fā)中常見的術語,就是將一個角色的多個動作放到一個圖片里,通過裁剪局部區(qū)域得到當前的角色狀態(tài)圖。

大家好,我是前端西瓜哥。今天來學習 pixijs 的 Sprite。

Sprite

pixijs 的 Sprite 類用于將一些紋理(Texture)渲染到屏幕上。

Sprite 直譯為 “精靈”,是游戲開發(fā)中常見的術語,就是將一個角色的多個動作放到一個圖片里,通過裁剪局部區(qū)域得到當前的角色狀態(tài)圖。

Sprite 的紋理通常為圖片。

創(chuàng)建 Sprite 不用 new 關鍵字,而是用 PIXI.Sprite.from(url) ,傳一個圖片地址字符串。

const watermelon = PIXI.Sprite.from('./fe_watermelon.jpg');
watermelon.x = 50;
watermelon.y = 50;
app.stage.addChild(watermelon);

加載圖片是異步的,如果圖片較大,或網(wǎng)速不好,加載完成的時機就會比較晚了。

加載慢,其他不需要加載的普通圖形(比如矩形)才不會等你,會先繪制。然后等到圖片加載好后,再更新圖形樹繪制新的畫面。

模擬網(wǎng)速慢,導致圖片加載遲緩的效果:

圖片

一些屬性

tint

tint (大概是 “色相” 的意思)會給圖片著色:

img.tint = 0x00FF00;

可以看到,西瓜變得更綠了。

圖片

這在游戲中可以利用綠色的 tint 表示角色中毒,或者用灰色的 tint 表示天色已晚。

blendMode

然后是渲染模式 blendMode,目前只支持 4 種(基于 WebGL):

  • NORMAL:正常,即沒有濾鏡效果。
  • ADD:給下面的像素疊加 RGB 通道。
  • MULTIPLY:正片疊底,效果是:像是很多張幻燈片疊在一起,因為密度大導致顏色加深。
  • SCREEN:濾色,效果是發(fā)亮。

anchor

上一節(jié)講解 “修改圖形屬性” 時,我們提到了通過 pivot 修改變形(transform)的中心,但對于 Sprite 來說,額外提供了一個特殊的 anchor 屬性。

這個屬性的值范圍為 0~1,表示相對圖片寬高位置的百分比,比如設置為 (0.5, 0.5) 就是取寬高一半的位置作為旋轉中心,也就是圖片的中點。

img.anchor.set(x, y);

SpriteSheet

SpriteSheet 是管理多個 Sprite 的類,就是前面說的將多個角色的狀態(tài)放在一起。

優(yōu)點是:

  1. 加快加載速度:因為多個 sprit 放在一個圖片上了。
  2. 提高批渲染效率:pixijs 快的秘訣是使用盡量少的 draw call(CPU 通知 GPU 繪制,比 GPU 繪制還耗時),將多個 sprite 放在一起有助于批渲染。
const atlasData = {
// 如何裁剪圖片中的內容來生成多個 sprite
frames: {
enemy1: {
frame: { x: 0, y: 0, w: 32, h: 32 },
sourceSize: { w: 32, h: 32 },
spriteSourceSize: { x: 0, y: 0, w: 32, h: 32 },
},
enemy2: {
frame: { x: 32, y: 0, w: 32, h: 32 },
sourceSize: { w: 32, h: 32 },
spriteSourceSize: { x: 0, y: 0, w: 32, h: 32 },
},
},
// 圖片元信息
meta: {
image: "images/spritesheet.png",
format: "RGBA8888",
size: { w: 128, h: 32 },
scale: 1,
},
// 如果使用動畫,動畫幀對應的 sprit
animations: {
enemy: ["enemy1", "enemy2"],
},
};

// 創(chuàng)建 spritesheet
const spritesheet = new PIXI.Spritesheet(
PIXI.BaseTexture.from(atlasData.meta.image),
atlasData
);

// 生成材質,這是異步的
await spritesheet.parse();

// 播放動畫
const anim = new PIXI.AnimatedSprite(spritesheet.animations.enemy);
anim.animationSpeed = 0.1666;
anim.play();
app.stage.addChild(anim);


責任編輯:姜華 來源: 前端西瓜哥
相關推薦

2023-03-02 07:44:39

pixijsWebGL

2023-02-23 08:40:09

Pixijs修改圖形屬性

2023-02-22 09:27:31

CanvasWebGL

2022-12-02 14:20:09

Tetris鴻蒙

2022-11-29 16:35:02

Tetris鴻蒙

2023-03-30 09:32:27

2022-11-14 17:01:34

游戲開發(fā)畫布功能

2023-11-13 22:27:53

Mapping數(shù)據(jù)庫

2024-02-28 12:12:20

Pipeline數(shù)據(jù)機制

2023-04-17 09:01:01

WebGL繪制三角形

2022-02-08 14:35:36

分片集群數(shù)據(jù)庫mongo

2023-05-04 08:48:42

WebGL復合矩陣

2023-06-26 15:14:19

WebGL紋理對象學習

2023-04-26 07:42:16

WebGL圖元的類型

2023-04-12 07:46:24

JavaScriptWebGL

2023-11-30 15:23:07

聚合查詢數(shù)據(jù)分析

2023-03-29 07:31:09

WebGL坐標系

2023-11-13 12:48:32

語言DSL

2023-04-11 07:48:32

WebGLCanvas

2023-05-08 07:29:48

WebGL視圖矩陣
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99国产精品久久久 | 免费av观看| 日韩欧美国产不卡 | 天天澡天天狠天天天做 | 91就要激情 | 国产黄色麻豆视频 | www.天天操| 天天av综合 | 亚洲免费一区二区 | 亚洲成人免费观看 | 国产精品爱久久久久久久 | 欧美三级电影在线播放 | 亚洲国产成人精品久久久国产成人一区 | 国产2区 | 久久亚洲天堂 | 久久久免费 | 夜色www国产精品资源站 | 亚洲精品电影在线观看 | 久久精品福利 | 久久99精品久久久久久青青日本 | 国产精品a久久久久 | 国产精品美女久久久久久久网站 | 日韩欧美中文在线 | 国产成人短视频在线观看 | 一级黄色裸片 | 亚洲欧美一区二区在线观看 | www.狠狠干 | 人人草人人干 | 97精品一区二区 | 欧美亚洲国产日韩 | 久久久久久国产一区二区三区 | 日日天天| 精品综合久久 | 国产a区| 成人在线观看免费观看 | 日本一区二区高清不卡 | 男女羞羞在线观看 | 精品入口麻豆88视频 | 一区二区三区精品视频 | 一区二区高清不卡 | 国产视频久久 |