sprite_set_alpha_from_sprite()


リソース操作・スプライト

sprite_set_alpha_from_sprite

指定のスプライトのアルファ値を別のスプライトで変更します

構文

sprite_set_alpha_from_sprite(ind, spr);
ind
ターゲットスプライトのインデックス番号
spr
合成元のスプライトのインデックス番号

戻り値

N/A
なし

説明

この関数は指定のスプライトのvalue/saturationを使用し、ターゲットスプライトのアルファ値に乗算します。 理想としては、合成元のスプライトは不透明を白、透過を黒とするグレースケールとします。 合成元のスプライトは恒久的なリソースにすることはできず、アルファ値を設定するものとなります。 この関数が正しく機能するためには、新しいスプライトを作成する必要があります。 これは、サーフェースを使用して、サーフェースを元にスプライトを作成することで実現することができます。 ここのコード例ではサーフェースで実装しています。 以下は、この関数がどのように機能するかを示した画像です。

spr_alpha.png

この例では2つのスプライトリソースから特殊効果用のスプライトを作成する方法を示しています。 "spr_create"変数はスプライトを一度だけ作成することを保証するフラグとなります。

spr_create = true;

それが終わったら、Drawイベントで以下のように記述します

if spr_create
{
  spr_create = false;
  var surf, spr;
  surf = surface_create(sprite_get_width(spr_Explosion_Alpha), sprite_get_height(spr_Explosion_Alpha));
  surface_set_target(surf);
  draw_clear_alpha(c_black, 0);
  draw_sprite(spr_Gradient, 0, 0, 0);
  sprite_index = sprite_create_from_surface(surf, 0, 0, sprite_width, sprite_height, false, false, sprite_get_xoffset(spr_Gradient), sprite_get_xoffset(spr_Gradient));
  draw_clear_alpha(c_black, 0);
  draw_sprite(spr_Explosion_Alpha, 0, sprite_get_xoffset(spr_Gradient), sprite_get_xoffset(spr_Gradient));
  spr = sprite_create_from_surface(surf, 0, 0, sprite_width, sprite_height, false, false, sprite_get_xoffset(spr_Gradient), sprite_get_xoffset(spr_Gradient));
  surface_reset_target();
  surface_free(surf);
  sprite_set_alpha_from_sprite(sprite_index, spr);
  sprite_delete(spr);
}
draw_sprite(sprite_index, 0, x, y);

上記コードではフラグが真であるかをチェックし、trueであれば、フラグをfalseにして、スプライトのアルファ値を設定するためのコードを実行します。 そしてサーフェースの一部分をスプライトとし、sprite_indexに格納します。 その後アルファマップ用のスプライトを作成しインデックス番号を格納、サーフェースの割り当てを解除した後、スプライトにスプライト指定でアルファ値を設定します。 最後にスプライトを削除します。

ここで作成したスプライトは不要になってもメモリ上に残り続けるので、DestroyイベントやRoom終了イベントで、以下の関数を呼び出し削除します

sprite_delete(sprite_index);

Wiki内検索

#search(): You already view a search box

MENU

ドキュメント

GMLリファレンス

2ch

その他



最新の30件

2024-03-07 2023-08-09 2023-05-21 2023-05-20 2023-05-04 2022-10-13 2022-07-21 2022-07-02 2022-04-06 2021-11-30 2021-11-26 2021-10-03 2021-09-23 2021-08-15 2021-06-02 2021-01-23 2021-01-21 2021-01-19 2021-01-18 2021-01-16 2021-01-15

人気の10件

今日の10件



これまでの訪問者: 1699
今日の訪問者: 1
昨日の訪問者: 0
閲覧者: 5