【10】Siv3D シーン遷移によるタイトル画面の作成と、ポーズ機能の実装をする
ゲームに必要不可欠である、タイトル画面を実装してみます。ゲームを起動して間髪入れずにゲーム始まってしまうと、拍子抜けするというか、いろいろと物足りないし理不尽です。そこで、
タイトル画面でアクションを起こす(ゲームスタートキーを押す) → ゲームが始まる
のような、シーン遷移をさせましょう。このようなシーン遷移を実装するのに普通はかなり手間が掛かってしまいますが、それが標準で用意されているのがSiv3Dです。厳密にいうならば、Siv3Dに付属しているフレームワークであるHamFrameworkをインクルードし、ham::SceneManagerを使うことで比較的簡単にシーン遷移をさせることができます。
参考記事:
Siv3Dでのシーン遷移をサポートするSceneManagerの使い方とその応用 - Qiita
【9】Siv3D 敵HPゲージを実装する
敵HPのゲージを実装してみます。今までの記事と比べると明らかにコードも内容も薄いですが、リアルとの兼ね合いで許してください…orz
今までは、敵のHPを数値によって表示させていました。このままでも良いのかもしれませんが、敵の弾を避けつつ文字を確認するなど玄人でもないと無理ですので、一般人の周辺視野でも確認できる程度にはわかりやすく表示させましょう。(そもそもHP表示の無いシューティングゲームの方が多いと感じますが、ゲージがあった方が個人的には好みです)
また、ついでに自機数なんかの表示形式も変えてみます。
【8】Siv3D プレイヤー弾のショット、および敵の実装をする
今まで数回に渡ってシューティングゲームを作成するための手法を紹介してきましたが、今回はいよいよ敵というものを実装してみます。シューティングゲームですから、ボスのような存在があった方が盛り上がるでしょう。そしてそのボスを倒すために、プレイヤーから放たれる弾というものも実装してみます。俗にいうshotってやつですね。
今回は、コイツが敵として攻撃を仕掛けてくるようなコードを書いてみます。
コイツ(提供:8r1kさん)
敵にはHPを持たせ、プレイヤー0のショットでHPを減らしていく。HPを削ると敵が攻撃を変えてくる…そんな仕様で作ってみます。
ちなみに大変申し訳ないのですが、コードを書いてるのに夢中になりすぎた挙句ブログの文章を書く時間・気力を奪われてしまいましたため、コード・動画と必要最小限の解説のみとなります…すみません!
続きを読む【7】Siv3D 本格的なシューティングゲームを作るための小技集!
こんばんは。12月に入り、このブログの一企画として一人でAdventCalendar25記事を完成させるという馬鹿企画をしてからなんと一週間が経ちました。
経ってしまいました。
当初は3日坊主で終わる感満載だったのですが、気が付けばもう7記事目。今のところすべてがSiv3Dに関する基礎的な内容ではありますが、続いています。このままいけば25記事完走も夢じゃないのかも…!
そんな記念すべき(?)1週間目の内容ですが、一気に本格的なシューティングゲームに近づけたいと思います。シューティングゲームを作るにあたってあると便利だが、ひとつの記事にするには贅沢というような内容をまとめて紹介しようと思います。
読者のみなさんのモチベーションを上げるためにも、今回紹介する内容でここまでできる!といったスクリーンショットを貼ります。なんかそれっぽいシューティングゲームになってるよね…!?
【6】Siv3Dで、シューティングゲームの自機を実装する
シューティングゲームの要領で、キーボード入力に対して画面上のオブジェクトを動かしてみようと思います。また、自機とオブジェクトとの当たり判定なんかも実装してみます。
今回取り扱う内容はかなり簡単な内容かと思いますので、肩の力を抜いてみて頂ければなーと思います!
Siv3Dにおけるコンテナ(Array)を使ってみる
1つ前の記事に対する補足の記事です。
konkea.hatenablog.com
自分はvector型にオブジェクトを格納し、forで1つずつ回していたのですが、コメントにて「オブジェクトの削除はErase_ifを使うといいよー」とのご指摘を受けました。
リファレンスを参考に見させていただいたところ、Erase_ifだけでなくSiv3Dにて独自に用意されている便利な型・関数がありましたので補足という形で紹介させていただきます!
参考URL
シューティングゲーム · Siv3D/Reference-JP Wiki · GitHub
【5】Siv3Dでオブジェクトの後処理(削除)をする
こんばんは。珍しくブログ更新が続いている、そんなAdventCalendar5日目です。まだまだネタは切れていません。
前回の記事では、複数のオブジェクトを発生させるというプログラムを記述しました。
【4】Siv3Dで複数のオブジェクトを処理する - プロジェクトシートK(仮)
これでシューティングゲームのように、ひたすらオブジェクトを発生させるようなことが出来るようになりました。しかし、このままでは不都合が生じます。オブジェクトを発生させまくるのはいいものの、後処理をしていないためにいらない処理を続けてしまいます。つまり処理落ちが起こります。
特にシューティングゲームにおける処理落ちは致命的なので、避けなければいけません。今回はそのための手法を紹介させていただきます。