81 lines
3.3 KiB
JavaScript
81 lines
3.3 KiB
JavaScript
/*:
|
|
* @plugindesc 中央の明度を上げ、彩度を少し低めにしたグラデーション背景プラグイン
|
|
* @target MZ
|
|
* @help
|
|
* このプラグインは中央に卵子を象るグラデーションと、全体的に彩度を調整した背景を描画します。
|
|
*
|
|
* イベントの「スクリプト」コマンドで以下を使用してください。
|
|
* グラデーションを表示: GradientOverlay.show();
|
|
* グラデーションを削除: GradientOverlay.hide();
|
|
*/
|
|
|
|
(() => {
|
|
const GradientOverlay = {};
|
|
|
|
GradientOverlay.show = function() {
|
|
// 既にグラデーションが存在する場合は何もしない
|
|
if (SceneManager._gradientSprite) return;
|
|
|
|
// スプライト作成
|
|
const gradientSprite = new Sprite();
|
|
const width = Graphics.width;
|
|
const height = Graphics.height;
|
|
|
|
// ビットマップ作成
|
|
const bitmap = new Bitmap(width, height);
|
|
const context = bitmap._context;
|
|
|
|
// 内側から外側に徐々に暗くなりつつ、彩度を低めに調整
|
|
const radialGradient = context.createRadialGradient(
|
|
width / 2, height / 2, width / 4, // 中心と開始半径
|
|
width / 2, height / 2, width // 外側の半径
|
|
);
|
|
radialGradient.addColorStop(0, '#9A3C64'); // 中央のやや明るい紫(彩度控えめ)
|
|
radialGradient.addColorStop(1, '#4D2033'); // 外側の暗い紫(彩度控えめ)
|
|
context.fillStyle = radialGradient;
|
|
context.fillRect(0, 0, width, height);
|
|
|
|
// 卵子を象る楕円形のグラデーション
|
|
const eggGradient = context.createRadialGradient(
|
|
width / 2, height / 2, 0, // 楕円の中心(中央部から開始)
|
|
width / 2, height / 2, 150 // 楕円の最大半径
|
|
);
|
|
eggGradient.addColorStop(0, 'rgba(255, 220, 220, 1)'); // 明るい桃色
|
|
eggGradient.addColorStop(0.5, 'rgba(200, 150, 180, 0.6)'); // 少し暗い桃色
|
|
eggGradient.addColorStop(1, 'rgba(100, 50, 80, 0)'); // 外側(透明な紫)
|
|
context.fillStyle = eggGradient;
|
|
context.save();
|
|
|
|
// 楕円を描画するためにスケーリング
|
|
context.translate(width / 2, height / 2); // 中心を移動
|
|
context.scale(1.5, 1); // 横に広げて楕円形に
|
|
context.beginPath();
|
|
context.arc(0, 0, 150, 0, Math.PI * 2); // 楕円形を描画
|
|
context.closePath();
|
|
context.fill();
|
|
context.restore();
|
|
|
|
// ビットマップを再描画
|
|
bitmap.baseTexture.update();
|
|
|
|
// スプライトにビットマップを設定
|
|
gradientSprite.bitmap = bitmap;
|
|
|
|
// 現在のシーンにスプライトを追加
|
|
SceneManager._scene.addChild(gradientSprite);
|
|
|
|
// スプライトを保持
|
|
SceneManager._gradientSprite = gradientSprite;
|
|
};
|
|
|
|
GradientOverlay.hide = function() {
|
|
// グラデーションが存在する場合は削除
|
|
if (SceneManager._gradientSprite) {
|
|
SceneManager._scene.removeChild(SceneManager._gradientSprite);
|
|
SceneManager._gradientSprite = null;
|
|
}
|
|
};
|
|
|
|
// グローバルに登録
|
|
window.GradientOverlay = GradientOverlay;
|
|
})();
|