GameMaker 日本語掲示板

GMLの豆知識 / 8

17 コメント
views
17 フォロー
8
asa 2021/12/06 (月) 12:22:16 修正

spriteのcollision maskは、ビルトイン変数と連動して拡大縮小、反転する。
これらを独自の変数に代えたら、描画と当たり判定を分離できる。

キャラを左右反転する場合。
image_xscaleは1のままにする。
独自の変数(例:xscale)で-1を指定し、draw_sprite_extで描画する。

xscale = -1;
draw_sprite_ext(spr_player, image_index, x, y, xscale, yscale, 0, c_white, 1);



反転でcollision maskがずれないようにするには、
collision maskの幅を偶数pxにして原点を中央にする方法でも可(たぶん)。
画像

通報 ...
  • 10

    collision mask の幅は偶数だと自分は引っかからなくなったので、それで。

    うっかりしがちのところでは、当たり判定の回転は direction ではなく image_angle に適用されるというところでしょうか。

    draw_sprite_ext(sprite_index,0, x, y, image_xscale, image_yscale, direction, c_white, image_alpha);
    

    とすると当たり判定は回転しないっていう

    11

    そうですね、sprite描画の角度はimage_angle、移動量に関する角度はdirectionですので、
    そのようにビルトイン変数を使い分けるといいと思います。