あさちゅんのゲームブログスマートフォン用の表示で見るあさちゅんのゲームブログUnityやSiv3Dに関するゲーム開発メモを残していきますこの広告は、90日以上更新していないブログに表示しています。C++Siv3Dはプログラミングだけで簡単かつ直感的に画像を出したり、音楽を鳴らすことができます。入門チュートリアルはそこで終わっているので、Siv3Dで初めてゲーム制作をする人は画像や音楽を扱えるようになったけど、どうやってゲームを作ればいいかわからないとなるかもしれません。そこで今回は、「Siv3Dで横スクロールゲームを作る」と称し、横スクロールゲームを作ってみようと思います。作るものは横スクロールゲームですが、真上からの俯瞰視点のゲームならアクションゲームでもRPGでも応用できると思います。リソースはSiv3D付属の物を使うので、Siv3Dのインストールさえ終わっていればすぐ始められます。真っ黒い画面だとモチベーションも上がらないのでまずは背景を設定しましょう。次にTextureを作り、描画しますが、そのままだと大きさが足りないのでscale関数で大きくします。本来ならばリサイズせずに済むように画像を作るべきです。足場となるBlockクラスを作ります。メンバ変数として必要なのはどこに配置されているかを示すRectFと表示する画像を示すTextureになります。RectFの方はコンストラクタで設定できるようにしておきましょう。次にメンバ関数についてですが、ブロックのようにゲーム内に描画されるオブジェクトは「更新のみを行う関数」と「描画のみを行う関数」を分けましょう。draw関数としました。ブロックは一度設置すると、そのまま更新されることはないのでupdate関数は不要なのですが、今後のことを考えて作っておきましょう。ブロックの配置さっき使ったBlockを配置していきます。複数配置したいのでArray(Siv3D版vector)を使用します。update関数とdraw関数のために二回for文を回すのは無駄に見えますが、今後のために面倒でも分けておいてください。backgroundの前にblocksのdraw関数を呼んでしまうと、ブロックが後ろに入って背景しか見えなくなるので描画順に注意してください。同様にPlayerクラスも作成しましょう。メンバ変数としてRectFを持ちたいところですが、キャラクターは座標で管理した方が扱いやすいのでVec2をメンバに持たせます。ただの点だと見辛いので点を中心とした円をdraw関数で描画しておきます。update関数内では左右キーの状態によってx座標を変更します。これにより水平方向に移動することができるようになります。次にPlayerクラスにもTextureを持たせ描画しますが、ここで一つ注意があります。今までm_positionで指定してきた座標はキャラクターの座標なので、その足元が示されるべきですが、RectFで指定する座標は画像の左上です。そのことを考慮して、横幅と縦幅、m_positionから画像の左上の座標を計算してRectFを作成、draw関数を呼びます。まとめまだ、重力も当たり判定も実装していないので、Siv3D君が宙を平行移動している状態ですが、とりあえず絵面として必要なものは揃いました。次回は重力とジャンプ機能を実装しようと思います。次回おまけやっていることは単純なのですが、次回以降の下準備もしていたため少々長くなってしまいました。間違ってしまった人は下記を参考にしてみてください。Studioでつまずいた点まとめ先週、6月26日に10時間ハッカソンに行ってきました。スクロールの実装Siv3Dで横スクロールゲームを作るの最終回です。重力とジャンプの実装Siv3Dで横スクロールゲームを作るの第二回です。»プロフィールid:chunchunmorningUnityやSiv3Dに関するゲーム開発メモを残していきます。サーバとはSiv3DのTCP通信で文字列を扱うGoogleVRのGazeInputModuleを扱う月別アーカイブはてなブログをはじめよう!chunchunmorningさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。