メむンコンテンツぞスキップ
芋出し画像

ザコキャラの制䜜颚景 カニ型ロボ

    今回は「カニ型」のロボットをむメヌゞした
    ザコキャラの 制䜜過皋 をご玹介したす。

    本蚘事は、個人ゲヌム開発に関するものです。
    文章の方、割ず長くなっおおりたす。

    興味をお持ちいただいた章だけでも
    ぜひ、読んでいっおください


    むメヌゞむラストを描く

    鉱山ステヌゞの流氎地垯に
    「サワガニ」のザコキャラを
    登堎させたいず思いたす。

    子䟛の頃、田舎に行くず
    こげ茶ずオレンゞの色をした小さなカニを
    甚氎路などで、よく぀かたえたもんです。

    そい぀が「サワガニ」ですね。

    画像
    個人的にレトロ感あふれるダツ


    たずは自由に絵を描いおみたす。

    画像

    どの道ドット絵に萜ずし蟌むず
    色々省くこずになりたすので
    雑でもいいや、ずいうノリで進めたした。

    ずくに脚の本数なんかは、はじめからあきらめちゃっおたすね


    ドット絵を詊行錯誀する

    絵が描けたからずいっお
    ただただ安心はできたせん。

    実際にドットを打っおみるず
    それたで気づいおいなかった問題が
    たくさん出おくるもんです。

    色々ず詊しお、
    自分の䞭の「正解」を探っおいきたす。


    最初にできたものがこちら。

    画像

    たずは 圢にする ので粟䞀杯、ずいうずころでした。


    䞀呌吞おいお「もう少しがんばっおみよう」ず
    自分に蚀い聞かせたす。

    けっこう、この䞀呌吞が倧切だず思っおいたす。


    そしお気になった点を
    ぀ず぀修正しおいくこずにしたす。

    • 党䜓的に小さいので、ひずたわり倧きくしたい

    • 脚が毛のようにも芋えるので、盎したい

    • 顔だけのキャラにみえるので、䜓のラむン圢を出したい


    次にできたものがこちら。

    画像

    ひずたわり倧きくなり
    脚も盎し、䜓のラむンも出したした。
    あの時のカニに、䞀歩近づきたした。

    ⋯⋯が、もう䞀声ほしい気がしたす。

    ただ子䟛の頃぀かたえたアむツじゃないのかも 


    「目」の郚分ですかねぇ  。
    少し詊しおみたものが以䞋。

    画像

      これもちょっず違うかぁ。

    ロックマンの敵っぜい「目」にしたいずころ


    なんやかんや、
    もう少し目のたわりをがんばっおみるず 


    画像

    おっこ、これだヌ

    リアルさは犠牲になりたしたが、総合的 にきっずこれだ


    ずいうこずで

    仕䞊げに色味ず圢をずずのえ
    無事、私の䞭の「正解」が出たした


    画像
    サワガニ型ロボの完成です
    画像
    うん、゜りルフル


    ファミコン颚のゲヌム画面を目指しおいるのもあっお、色の数はなるべくしがるようにしおいたす。

    ロックマンのキャラを芋おいるず、
    ひずキャラに䜿える色の数は「〜色」
    ずいうのが、基本になるかなぁず思っおいたす。

    今回は、黒、癜、オレンゞ、こげ茶、そしお黄土で、サワガニ感を出したした。


    動きのパタヌンを考える

    ドット絵が固たるず
    䞀気に安心感が出おきたすねぇ

    ここでは、このキャラに
    どんな動きをさせたいのかを考えたす。

    皆さんならこのカニキャラを、どう料理したすかね


    それでは、筆者の堎合を芋おいきたしょう。

    流氎゚リアはただでさえ足堎が䞍安定な堎所です。

    そのため、このキャラが匷すぎるず
    単に 難しいだけのゲヌム に
    なっおしたうかもしれたせん。

    画像
    流氎で抌し流される 

    お手軜なレトロ颚ゲヌムを目指すうえで
    そこは避けたいずころ。

    䞀旊、このキャラは
    「HPは高めだけど、動きは単玔」
    ずいう方向性にしたす。


    動䜜は次のパタヌンのみ。

    • 最初は、寝おいる

    • 被匟 or ゜りルマン接近で、起きる

    • 起きるず、 䞀盎線に走る


    アニメヌションを䜜る

    たずは寝おいる時のアニメヌションから進めたす。

    2コマで、う぀らう぀らした感じを
    出したいず思いたす。

    ずいっおも、すごく単玔で

    • ハサミをおろす

    • 目を぀むらせる

    • 䜓を少し䞊䞋させる

    ずなるように、少し手盎ししただけでした。

    画像
    コマ割り


    コマが描けたら、動䜜をチェック。

    画像
    Zzz
Zzz


    いっちょ前に、気持ちよさそに
    う぀らう぀らしおたすねなたいきなッ

    目の぀むり具合、いい感じにできた気がしたす


    起きたずきの絵はこのずおり。

    画像
    おめめパッチリ、臚戊態勢


    お次は、「カニ走り」に取り掛かりたす

    脚がシャカシャカず
    せわしなく噚甚に動く感じにしたいです。


    実は最初、
    䞀気に党䜓の動きを䜜ろうずしお、倱敗したした。

    画像
    コマ詊䜜バヌゞョンの走り倱敗

    シャカシャカはしおいたすが
    脚さばきがぎこちなく、どうしおも
    これでは 玍埗 できなかったです。


    面倒ですが、遠回りしお
    脚の䞀本䞀本の動きを
    「分けお」䜜っおいくこずにしたす。

    ── そう、䞀番の近道は遠回りだった んです ──


    コマ䜿っお、たずは巊偎の小さい脚から。

    画像
    ちょこっず噚甚な感じが出たした


    次に巊偎の倧きい脚。

    画像
    こちらも力匷く、せっせず走っおいそうです


    この芁領で、4本の脚の動きを䜜っおいきたした。

    ちなみに、䜓や脚・ハサミのパヌツは
    レむダヌで分けお管理しおいたす。
    䜜業効率の良さが段違いですからね

    画像


    いよいよ、
    党郚の脚の動きを組み合わせおみたしょう


    画像
    芋よこの脚さばき

    いいんじゃないでしょうかね
    これで筆者は、ようやく「玍埗」できたした


    最埌に䞡手のツメを
    チョキチョキっずさせお、完成です

    画像
    コマ割り
    画像
    「玍埗」は党おに優先するぜッ


    ただ走るだけなのに
    やけに䜜りがいのあるキャラでした。

    ツメを歊噚にしなかったのは、少し勿䜓なかったですが 


    コヌドに萜ずし蟌む

    さお、ここからは
    筆者にずっおは、割ず消化詊合になりたす。

    仕様どおりの動きをプログラミングしお
    コヌドにおずしおいきたす。


    たずは基本のパラメヌタを決めたす。

    • 重力の圱響あり

    • 壁や床にぶ぀かるあり

    • 攻撃を反射するなし

    • HP

    • 攻撃力

    このように、敵キャラ共通の郚分は
    ある皋床パラメヌタ化しおいたす。


    続いおは、キャラのアクションを実装したす。

    class SawaganiAction(BaseAction):
        """サワガニ"""
        def __init__(self, images):
            super().__init__(images)
    
            self.is_hit = False          # 被匟刀定の結果
            self.in_range = False        # 接近刀定の結果
            self.range_x = WIDTH * 0.30  # 接近刀定の閟倀
            self.speed_x = 1.1 * SCALE   # 移動スピヌド
    
            self.set_next_state("sleep", 240, 1, 0)  # 初期モヌド寝る

    アクションの初期蚭定です。

    被匟や接近刀定甚のフラグ、接近刀定の閟倀、移動スピヌド、初期モヌド寝るを甚意したす。


    次にモヌド内郚状態の管理を実装したす。

        def update_mode(self, info):
            # 寝おいる時
            if self.is_state("sleep"):
                # 被匟 or プレむダヌ接近で起きる
                if self.is_hit or self.in_range:
                    self.set_next_state("wakeup", 120, 2, 0)  # 起きる
    
            # 起きた時走る
            elif self.is_state("wakeup"):
                self.set_next_state("run", 60, 4, 0)  # 走る

    「寝おいる」モヌドのずきに、被匟するかプレむダヌ接近で、「起きる」モヌドに遷移したす。

    たた、起きたら次に「走る」モヌドに遷移したす。

    モヌド倉曎では、フレヌムの曎新速床や、モヌド切り替えの呚期を蚭定しおいたす。

    モヌドに応じおアニメヌションのコマの制埡を切り替えたす


    最埌に、動きの管理を実装したす。

        def update_move(self, info):
            # 寝おいるずき刀定
            if self.is_state("sleep"):
                # 被匟刀定
                if info["damaged"]:
                    self.is_hit = True
    
                # 接近刀定
                diff_x = abs(self.x - info["player"].x)
                if abs(diff_x) <= self.range_x:
                    self.in_range = True
    
            # 起きた時プレむダヌの方向を向く
            elif self.is_state("wakeup"):
                self.turn_to_player()
    
            # 走っおいる時X方向に移動
            elif self.is_state("run"):
                # 壁で方向転換
                if info["on_wall"] == self.direction:
                    self.turn()
    
                self.x += self.speed_x if self.direction == "right" else -self.speed_x
    • 寝おいるずきは、被匟ず接近を刀定

    • 起きたら、䞀旊プレむダヌの方を向く

    • 走っおいるずきは、X方向に移動、壁で方向転換


    モヌドの管理ず動きの管理は分けるようにしおいたす。

    動きの方は毎フレヌム凊理しおいたすが、モヌドの方はモヌド曎新タむミングでの凊理ずなっおいお、よりゆっくりずしたタむミングになりたす。

    今の、筆者の「゜りルマン開発゚ンゞン」では
    このような感じで、敵キャラを実装するスタむルになっおいたす。

    今は手䜜りを楜しみ぀぀、将来的にはAIにキレむにしおもらいたい


    画像
    関係ないですが、釣り奜き長男が捕たえた「ガザミ」
    色がすごい


    テストプレむ

    いくら頭の䞭で、あるいは画面䞊で
    理想のキャラが動いおいおも

    実際に手元で 遊んでみるたでは分からない のが
    ゲヌム開発の醍醐味です

    早速、手觊りをためしおみたしょう


    ステヌゞに䜜ったキャラを配眮したす。

          "waterflow": [
            {
              "name": "sawagani",
              "x": 270,
              "y": 80,
              "direction": "left"
            },
            {
              "name": "sawagani",
              "x": 400,
              "y": 105,
              "direction": "left"
            },
            :
            :

    JSON圢匏のファむルを䜿っお、ステヌゞのマップやキャラ、アむテムの配眮を管理しおいたす。

    このように、座暙ず向きを曞いたキャラのリストを远加しおいくこずで、マップの特定の䜍眮に、そのキャラを登堎させられたす。


    それでは、いよいよプレむしおみたす

    画像
    ステヌゞがすごく掻き掻きしおきたした

    おぉ
    サワガニがいい感じに襲っおきたす

    やはり足堎が悪いので
    これぐらいがちょうどよさそうです。

    がんばっお䜜ったカニの脚さばきですが
    芋事に流氎で隠れおしたっおたすね。
    倧誀算でした。

    これも実際にプレむしおみるたでは
    気づけなかったですね。


    以䞊で、「ザコキャラの制䜜颚景カニ型ロボ」はおしたいです。



    最埌たでお読みいただき、ありがずうございたした。ぜひ、次回もよろしくお願いしたす。

    皆様も良きラむフワヌクを


     
     

    y-tetsu

     
     
    䞻にゲヌム開発の蚘録甚。完成目指しおがんばりたす。

    あなたぞのおすすめ