0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ゲーム開発で使用したテクニック~スキルエフェクト~

Posted at

個人でゲーム開発をしている中で、実装に苦労した部分が多かったので、テクニックとして紹介していこうと思います。

今回は「スキルエフェクト」について書きます。

概要

スキルを使用したときに円形(輪)のエフェクトを表示させます。
通常スキルは円を1回表示させます。
必殺技は円を3回表示させます。

円1回

def skill_effect(self, rgb, Player):
    """
    スキル使用時のエフェクトを描画する
    """
    x,y = Player.ICON_POS
    r,g,b = rgb
    width = 10
    for radius in range(0, 128, 1):
        self.screen.fill(self.BG_COLOR)
        self.screen.blit(Player.P_IMG, (x, y), Player.get_direction())
        pg3.draw.circle(self.screen,(r,g,b),(x+30,y+30),radius*8,width)
        pg3.time.delay(4)
        pg3.display.update()
    # 元に戻す
    self.redraw()
    # プレイヤーを表示する
    self.screen.blit(Player.P_IMG, (x, y), Player.get_direction())
    pg3.display.update()

radiusを更新することで、円はプレイヤーを中心に広がっていき、画面外に消えていきます。
描画がかなり重く、円を表示している間は背景とプレイヤー以外は表示しないようにしました。
円の描画が終わったら「self.redraw()」で画面全体を再描画しています。
「Player.get_direction()」はプレイヤーの現在の向きに応じた切り取り位置を返す関数です。

円3回

def skill_effect_sp(self, rgb, Player):
    """
    SPスキル使用時のエフェクトを描画する
    """
    x,y = Player.ICON_POS
    r,g,b = rgb
    width = 10
    temp_surface = pg3.Surface(self.DISP_SIZE, pg3.SRCALPHA)
    for radius in range(0, 128, 1):
        self.screen.fill(self.BG_COLOR)
        self.screen.blit(Player.P_IMG, (x, y), Player.get_direction())
        pg3.draw.circle(self.screen,(r,g,b),(x+30,y+30),radius*8,width)
        if radius > 25:
            pg3.draw.circle(self.screen,(r,g,b),(x+30,y+30),(radius-25)*8,width)
        if radius > 50:
            pg3.draw.circle(self.screen,(r,g,b),(x+30,y+30),(radius-50)*8,width)
        temp_surface.fill((r, g, b, radius))
        self.screen.blit(temp_surface, (0, 0))
        pg3.time.delay(3)
        pg3.display.update()
    # 元に戻す
    self.redraw()
    # プレイヤーを表示する
    self.screen.blit(Player.P_IMG, (x, y), Player.get_direction())
    pg3.display.update()

処理は円1回と大体同じです。
radiusが一定値を超えたら次の円を表示します。
最後の円が画面外に消えるように調整しています。
こちらは描画時に半透明のサーフェイスも描画しています。
透明度はradiusに一致させているので、円が広がると同時に透明度も変更されます。

「スキルエフェクト」に関しては以上となります。

リリース済みのゲームはこちら

・PC向け無料ゲーム
『LAbyrinth』(2Dの迷路探索ゲーム)
●Freem!
https://www.freem.ne.jp/win/game/33791
●Unityroom
https://unityroom.com/games/2025-labyrinth-isukaka

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?