ブログ毎日更新は274日目になります。ファミコンからスーパーファミコンになって色々驚きを受けた世代なので現代になってもいまだに古いゲームが好きな懐古厨です。自分一人でゲームを作ろうとすると世の中に出てるようなうすごいクオリティのゲームを作ることなんてかなりハードルが高いわけですね。そこにたどり着くには必然的にファミコンースーパーファミコンで使われた処理を最低限できなければゲームクリエイターとしては伸びにくいかと思います。3Dと2Dは別物なので勉強する分野はかなり変わってきますが、2Dで身につけた処理は2Dにも応用できるので覚えておいて損はありません。今回は私が現在Unityで作っているゼルダの伝説風アクションRPGを作るために神々のトライフォース(以下神トラ)のリンクの攻撃や動きを研究しています。その中で1回の攻撃でココまで細かい処理をしてるんだなぁと感動したので今回記事にしてみました。リンクの剣による攻撃の種類を洗い出してみようちょい押しと普通押しで条件分岐している長押しで回転斬りをするための準備に入る武器を出している時に剣に触れると突き攻撃になるリンクの剣による攻撃の種類を洗い出してみようリンクと言えば、剣による攻撃です。道具も使いますが基本的には斬撃・突撃がメイン攻撃になります。神トラの場合はBボタンを押すとリンクは剣を水平に振ります。長押しすると剣を構え、リンクの得意技「回転斬り」の準備に入ります。溜めが終わりボタンを離すと回転斬りが発動しますね。シリーズにもよるのですが、回転斬りをするには剣を前方に突き出してその判定に触れるとリンクは溜めを中断して突き攻撃に切り替えます。以上のことからリンクの攻撃は以下の種類になります。斬り払い回転斬り突きとてもシンプルですね。スマブラであればここに兜割(ジャンプして剣を下に向けて落下する攻撃)や上突き・後方斬り・三段斬りなど様々な技が増えています。トップビューのゼルダの場合は基本的にこの3つの攻撃に絞られます。絞られるのは作る側としても楽ですね(笑)ちょい押しと普通押しで条件分岐している実は神トラのゼルダ、やったことがある人ならすぐにわかると思うのですがBボタンちょい押しと長押しで剣のモーションが切り替わります。状況によってはBボタンを連打する時があります。その時に剣を最後まで降っていると、剣の判定のない場所に入り込まれた場合リンクはダメージを受けてしまいます。迫ってくる敵に対応するために、プレイヤーはリンクになりきって剣を連続して振るために連打をし始めます。ここでちょい押しと普通の押しで攻撃を切り替えてる恩恵が発動するわけですね。押し攻撃というのは角度で言えばざっくり90°剣を振るモーションになります。普通の押しの場合は180°剣を振る攻撃モーションです。素人がゲームを作ろうとした場合、ちょい押しと普通押しの処理を分けずに作るのでなんか微妙なゲームが出来上がってしまうのだと思われます。言った微妙なボタンの変化を取り入れることで完成度を高めることができます。長押しで回転斬りをするための準備に入る普通押しをして剣を降った後にまだボタンを押し続けていると、リンクは溜めモードに切り替わり回転斬りの準備に入ります。一定時間経った後にボタンを離すと回転斬りが発動しますね。内部的なことを言うとボタンを押している間は数値が増え続けます。その数値を毎フレーム監視しておき規定の値が溜まったら条件を満たす。いう風に処理を作っています。コードにすると以下のような感じですね。カウントが100になったら回転斬りできる準備が整ったことにしましょう。ENDIFENDLOOPこんな感じでしょうか。ボタンカウントによって様々な条件を分岐させています。ボタンを押した時に攻撃モーションを切り替える「PLAYER_ATTACK」を少し説明するとボタンカウントが1の時は90°斬るモーションを動かし、一定フレーム数押されていたら途中で180°斬るモーションに切り替えたりします。ボタンが押されていたらカウントがどんどん溜まって100になったら回転斬りフラグがONになり、ボタンを離したときにそのフラグをみて回転斬りをするか否かを決めます。基本的にはこのコードの考え方で大丈夫です。あとはゲーム制作ツールやプログラミング言語によって色々かわりますね。武器を出している時に剣に触れると突き攻撃になる先ほどの攻撃処理のコードに条件分岐を加えるとより一層神トラゼルダに近づきます。リンクは攻撃ボタンを長押しすると剣を振り終わった後に前方に剣を突き出します。この時点で溜め処理が入るのですが、剣は前方に突き出しているため衝突判定が出ています。その溜めている状態で衝突判定の範囲に入るとリンクは溜め流のをやめ突き攻撃に即座に切り替えます。ボタンカウントはリセットされるといった感じですね。この突きは攻撃するためだけではなく、怪しい壁を探したりもできます。このようないろんな処理を含むのでゼルダの伝説は剣を振ってるだけでも面白いゲームになっています。ここまででリンクの攻撃1つで様々な処理が判明しましたね。開発者目線になるといろんな分岐があることに気づきますが、プレイヤー目線だとそんな複雑な分岐を一切気にすることなく遊べるのがすごいところですよね。実際に遊んでみて、そしてそれを作ろうとしてみると開発者のプレイヤーに対する配慮が感じられます。実際に自分でゲームを作っていて、なんかちがうんだよなぁ...ってなることがとても多いです。いうのも、おそらくはこう言う細かい処理を作り込んでいないせいだと思います。面白いと思うゲームを作るには、自分が面白いと思ったゲームの処理をじっくりと観察してみることをオススメします。10/2なおキーヌ某なんでも屋企業のシステム管理者を務めつつリーマンからの解放を目指して奮闘中。FE&BE開発・Webデザイン・DTPデザイン・SEO・Webライティング等一人である程度のクオリティで大体のことが出来るなんでもエンジニア。小学校の夢でもあったゲームクリエイターを目指して2019年から少しずつ積み上げています。ゲーム作りの参考書TOP。