あさちゅんのゲームブログスマートフォン用の表示で見るあさちゅんのゲームブログUnityやSiv3Dに関するゲーム開発メモを残していきますこの広告は、90日以上更新していないブログに表示しています。サンプル付きゲームといえば可愛く、かっこよく動いてなんぼですよね。いう訳で今回は超簡単にアニメーションを作ろうと思います。できあがると下のキャラクターみたいに動くようになります!この方法だと簡単な代わりに容量とイラストレーターさんの気合が必要になりますが、、、ちなみにこのゲームはWCEの公式サイトからダウンロードできます。今回はサンプルを作ったので、もし自作するのが面倒という方はGitHubからダウンロードしていただけるとありがたいです。github.com用意する画像まず、下のような1コマ1コマを横に繋げた画像を用意します。この1コマを時間ごとにずらして描画する感じです。1コマごとに画像を区切らないかというとファイルを開くコストの都合とモーションごとにまとめた方が管理が楽だからです。それではこの画像を扱うAnimeクラスを作ってみましょう。Animeクラスコンストラクタでテクスチャとそれに含まれるコマ数を受け取り、draw関数で描画するクラスを作ります。画像は自分の環境にあったものを使用してください。(System::Update()){anime.draw();}}m_textureは扱うテクスチャ、m_sizeはそれに含まれるコマの数、m_indexは現在どのコマを描画しているかを保存する変数です。draw関数を見てみましょう。Texture::uv関数を使用しています。1)とした座標でテクスチャを切り抜ける関数です。(コマ数)になります。(コマ数)になります。m_indexは描画する度に変わるので、これでパラパラ漫画のようにアニメーションができる訳です。この時、片方をdoubleにキャストしておかないと整数の割り算になって目的の動作をしなくなるので気をつけてください。横幅の時、1じゃなく1.0と書いたのもこのためです。縦はもちろん0.0から1.0の間を切り取ります。改良版さきほどのを実行すればわかりますが、一回描画するごとに絵が変わるので速すぎて見えませんでした。今のままだと座標が指定できませんし、draw関数がm_indexを進めるのと描画する複数の作業をしているので関数を分けましょう。(System::Update()){anime.update();anime.draw(Mouse::Pos());}}新たにm_frameとm_countを用意して何回かupdate関数か呼ばれるとm_indexが変わるようにしました。draw関数をupdate関数とdraw関数に分けて、draw関数はconstメンバ関数にしました。これでHamFrameworkなどで使いやすくなりました。素材を用意するのはちょっと大変かもしれませんが、難しい処理なくアニメーションを作ることができました。素材さえあればどんな複雑なものも動かせます、素材さえあれば、、、また、上に貼った通りこれを改良したサンプルをGitHubに用意したので覗いていただけると幸いです。おまけ失敗したかもという人用に完成版を用意しました。Studioでつまずいた点まとめ先週、6月26日に10時間ハッカソンに行ってきました。スクロールの実装Siv3Dで横スクロールゲームを作るの最終回です。重力とジャンプの実装Siv3Dで横スクロールゲームを作るの第二回です。»プロフィールid:chunchunmorningUnityやSiv3Dに関するゲーム開発メモを残していきます。サーバとはSiv3DのTCP通信で文字列を扱うGoogleVRのGazeInputModuleを扱う月別アーカイブはてなブログをはじめよう!chunchunmorningさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。