コンテンツにスキップ

Blink (点滅)

ダメージを受けた際や、無敵時間の表現に使われる高速点滅です。 alpha (不透明度) を操作します。

/**
* オブジェクトを点滅させる
* @param target 対象オブジェクト
* @param duration 1回の点滅時間(ms) (デフォルト: 100)
*/
public startBlink(target: Phaser.GameObjects.GameObject, duration: number = 100) {
this.tweens.add({
targets: target,
alpha: 0.2,
duration: duration,
yoyo: true, // 戻る
repeat: -1, // 無限ループ
hold: 50 // 少し待機
});
}
create() {
const blinkObj = this.add.rectangle(400, 200, 100, 100, 0xffaa00);
// 0.1秒間隔で点滅
this.startBlink(blinkObj, 100);
}
クラス全体を見る
import Phaser from 'phaser';
export class BlinkScene extends Phaser.Scene {
constructor() {
super({ key: 'BlinkScene' });
}
create() {
this.add.text(10, 10, 'Blink Effect', {
fontFamily: '"Noto Sans JP", sans-serif',
fontSize: '24px',
color: '#00ff00'
});
this.add.text(400, 100, 'Blink (点滅)', { fontFamily: '"Noto Sans JP", sans-serif' }).setOrigin(0.5);
const blinkObj = this.add.rectangle(400, 200, 100, 100, 0xffaa00);
// 点滅エフェクトを開始
this.startBlink(blinkObj);
}
/**
* オブジェクトを点滅させる
* @param target 対象オブジェクト
* @param duration 1回の点滅時間(ms) (デフォルト: 100)
*/
public startBlink(target: Phaser.GameObjects.GameObject, duration: number = 100) {
this.tweens.add({
targets: target,
alpha: 0.2,
duration: duration,
yoyo: true, // 戻る
repeat: -1, // 無限ループ
hold: 50
});
}
}
  1. 無限ループ: repeat: -1 を設定することで、点滅を永続的に繰り返します。

  2. Yoyo: yoyo: true にすることで、不透明度を下げる→上げるという往復動作を自動化しています。

  3. Hold: hold: 50 で不透明度が戻った後に少し待機時間を設け、点滅のリズムを調整しています。