0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

pixi.jsのSpriteを星型にトリミング(マスク)する

Posted at

はじめに

pixi.jsで作成したGraphicsやSpriteをトリミングするためには、マスク処理が必要になります。今回は画面全体に表示した芝生を星型にトリミングしてみようと思います。

FireShot_Capture_005_-Vite_App-_localhost.png

ApplicationにSpriteを追加

まずは、画面全体に芝生を表示します。Spriteを上下左右、指定した幅まで繰り返し表示したいので、今回はPIXI.Spriteではなく、PIXI.TilingSpriteを使用しています。第二、三引数に横幅と縦幅を指定してあげることで、その幅まで画像が繰り返し表示されます。

import * as PIXI from 'pixi.js';

const app = new PIXI.Application({
  width: window.innerWidth,
  height: window.innerHeight,
  backgroundColor: 0x1099bb,
});

const texture = PIXI.Texture.from(
  'https://pixijs.io/examples/examples/assets/bg_grass.jpg'
);
const tilingSprite = new PIXI.TilingSprite(
  texture,
  window.innerWidth,
  window.innerHeight
);
app.stage.addChild(tilingSprite);

document.body.appendChild(app.view);

FireShot_Capture_004_-Vite_App-_localhost.png

星型にトリミングする

次に、トリミングするために星型をGraphicsで作成します。

const starMask = new PIXI.Graphics();
starMask
  .beginFill()
  .moveTo(108, 10)
  .lineTo(141, 80)
  .lineTo(218, 88.3)
  .lineTo(162, 141)
  .lineTo(175, 215)
  .lineTo(108, 180)
  .lineTo(41.2, 215)
  .lineTo(55, 141)
  .lineTo(1, 88)
  .lineTo(75, 78)
  .lineTo(108, 10)
  .endFill();

このGraphicsをtilingSpriteのmaskプロパティに代入してあげれば、トリミング完了です。

tilingSprite.mask = starMask;

FireShot_Capture_005_-Vite_App-_localhost.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?