pixi.jsでモザイク処理を行う

pixi.jsではフィルターでスーパーファミコンのようなモザイク処理(正しい呼び方がわからない)を行うことができます。

今回は私がゲームで使っているモザイク処理のやり方を説明します。

モザイク処理のサンプル画像

@pixi/filter-pixelateをインストール

私が現在使っているpixi.jsのバージョン5ではモザイク処理は標準では入っていません。

なのでインストールする必要があります。

npm install @pixi/filter-pixelate

これでモザイク処理が使えるようになります。

※私のテンプレートを使う場合は最初にインストールする際に一緒にインストールされています。

モザイク処理の使い方

使う際はまずはインポートします。

import {PixelateFilter} from '@pixi/filter-pixelate';

そしてモザイク処理を行いたい要素(containerなど)に追加します。

this.pixelateFilter = new PixelateFilter();
this.pixelateFilter.size = 1;
this.filters = [this.pixelateFilter];

ここまでが準備です。このpixelateFilter.sizeがモザイクの大きさです。1は通常の解像度と同じ大きさです。これが大きくなるとモザイクが大きくなります。

フェードインやフェードアウトで使う際にはループでこのpixelateFilter.sizeの値を大きくしたり小さくしたりするとスーファミで見たことのあるような感じのモザイク処理が出来上がります。

画像の引き延ばされ方に注意

モザイク処理とは単純な拡大処理で1ドットを引き延ばして表示します。pixelateFilter.size = 4であれば4ドットずつの間隔でその1ドットを4倍に拡大して表示します。

この時その1ドットは右と下に引き延ばされます。

そうすると見た目としてはモザイクが大きくなるにつれ右下に画像が動いているように見えてしまいます。

これの対処法としては単純にそのcontainerを反対方向、つまり左上に移動させることです。pixelateFilter.sizeの半分量を反対側に移動してやるとその場にとどまってモザイク処理がかかっているように見えます。

ただし、私のテンプレートではSceneの座標を動かすとScene切り替え時にエラーになってしまったので(原因はわかってません。。)、一つcontainerを用意してそこにすべてaddChildしてこのcontainerにモザイク処理をかけて動かしてください。

当サイトのオリジナルゲーム(ランダム表示)

スマホ専用対戦ピンポンゲーム。タッチだけのイライラ操作が逆に楽しい?
モバイル&対戦専用リバーシ。角を取ってみたら予想外に戦略が変わって面白い。
スマホ専用対戦ゲーム。3つの数字を順番にどちらが速く押せるかを競うミニゲーム。
短時間でたくさん計算問題を解くゲームです。掛け算割り算なのでかなり難しい。

記事の感想・コメント

※コメントはまだありません※

コメントを残す

メールアドレスが公開されることはありません。

おすすめメニュー

ゲーム一覧ページへのリンク画像
ゲーム開発技術ブログへのリンク画像
pixi.jsでのゲーム開発へのリンク画像
enchant.jsでのゲーム開発へのリンク画像
グッズページへのリンク画像

ゲームタグ一覧