Unityと吉里吉里でSLGとかRPGを作るブログ

そんな訳で、前回に続き、Unityの実装を公開します。
といっても、かなり作り直しました。
大枠では変わってませんが、処理の方法は大きく変更しています。
そんな訳で、もう一度、詳し目に書いてみます。

ちなみに現在の状況はこんな感じです
Twitterに飛びます

見た目の大きな違いとして、近接攻撃に「反撃」が出るようになりました。
また、魔法の飛び方を色々いじれるようにしました。
見た目の調整はこれからとしても、前の直線的な飛び方に比べても、良くなっていると思います。

見た目以外の違いとしては、キャラクターの制御を3つのスクリプトで制御する形にしました。
キャラクターのアクション、エフェクト、状態制御の3つです。
コンセプトは変わりませんが、変更前より強く独立性を高め、各ユニットのことは、極力各ユニットで処理を簡潔しています。

■Unityの実装

キャラクター制御
★キャラクター
キャラクターの制御は、以下のスクリプトで行っています。
・UnitMgr
 すべてのユニット情報がここに格納されています。
 ダメージや攻撃ターゲットの決定など、ユニット同士の情報が必要な処理もここに記載されています。

・AnimeControl
 キャラクターの動き(走ったり)や移動を制御してます。

・EffectMgr
 移動量や、移動速度などのエフェクト事の情報を管理してます。

・EffectControl
 ユニットが出すエフェクトの生成や移動を行います。

・UnitControl
 ユニットの状態制御を行っています。AnimeControlやEffectControlに命令を出したり、エフェクトやアクションの終わりを受け取って、状態の制御を行います。

ユニットコントロール
UnitControlでは、状態をこんな感じで管理してます。
「状態」辞退はUnitMgrに格納されており、それを参照、更新することで、各キャラが現在何をしているか、これから何をするかを制御する訳です

★ゲーム制御
プレイメーカー

ゲームの制御は、PlayMakerというアセットを使用してます。
正直、機能の3割も使っていません。もう少し使いこなしたいですね。




◆つぶつぶ主人公HP◆  ◆サンプルダウンロードの一覧◆
スポンサーサイト
2017.07.16 / Top↑
そんな訳で、前回に続き、Unityの実装を公開します。


ちなみに現在の状況はこんな感じです
Twitterに飛びます

相当量のスクリプトを書いたのに、見た目の印象はそんなに変わってないのがつらいですね。。。



■Unityの実装

・キャラクター
スプライトスタジオのアセットを使ってキャラクターオブジェクトを作成しています。

・移動
移動はiTweenアセットを使用。

・データ制御
データ周りはCSVをスクリプトで読み込み、スクリプトで更新してます。

・状態遷移
クリプトでほぼほぼ実装していますが、分かりやすさ向上のため、状態変化の部分はPlaymakerのアセットを使用しています。

・エフェクト
スプライトスタジオではなく、スプライトを使ってます。




■前回からの変更点

・キャラクターをデータに合わせて生成するようにしました。これによりいろいろなキャラを表示できます。
・エフェクトが付きました。
・ダメージ表現が付きました。
・武器に合わせ(剣だけだけど)踏み込む位置が可変になりました。



■エフェクト

前回、問題になっていたのは、スプライトスタジオのせいでした。
簡単に言うと、スプライトスタジオの提供しているViewは、スプライトスタジオのオブジェクトは、Z軸だけで表示できるものの、その他のオブジェクトは、このViewの後ろか前かしか表示できないようです。

そんな訳で、スプライトスタジオのQAを参考にした結果、こうなりました。
Viewの所
そう、すべてのキャラクターの上にViewを付ければ、その間にエフェクトを表示できる訳です。(※赤枠)
ちなみに、View間のソート順は、Sorting Groupで制御してます。(※青枠)



■赤丸

そして、気になる足下の赤丸ですが、こちらでダメージを受ける側の制御をしています。このまるが、対象まで移動したら、それをキーに対象がダメージエフェクトやらダメージ数値やらを出します。
赤丸解説

赤丸はiTweenで動かしてます。iTweenには移動が終了した後にプロシージャを呼べるので、それを使ったて、制御してます。
ちなみに、collisionは使ってません。

赤丸を移動させる理由として、遠隔攻撃と近接攻撃を同じロジックにできる(だろう)と判断した為です。








◆つぶつぶ主人公HP◆  ◆サンプルダウンロードの一覧◆
2017.06.11 / Top↑
そんなこんなで、Unityに取り込んで、簡単なバトルシーンの元ネタを作成しました。
ツイッターには結構前に公開しましたが、その後、エフェクト関連で轟沈し、ここから進んでない状況です。

今回はUnityでの実装を公開していこうと思います。
かなり独学なので、お手本というより、「へー、こんな感じで作ってるんだ」的な目線で見て頂けると嬉しいです。
逆にいえば、四苦八苦してる部分も公開していこうと思います。

ちなみに現在の状況はこんな感じです
Twitterに飛びます



■Unityの実装

・キャラクター
スプライトスタジオのアセットを使ってキャラクターオブジェクトを作成しています。

・移動
移動はiTweenアセットを使用。

・データ制御
データ周りはCSVをスクリプトで読み込み、スクリプトで更新してます。

・状態遷移
クリプトでほぼほぼ実装していますが、分かりやすさ向上のため、状態変化の部分はPlaymakerのアセットを使用しています。



■キャラクター制御

スプライトスタジオで制作したキャラクターは、簡単に取り込み、動かすことが出来ました。
実際、サンプルのソースを改造するだけで、30分後には好きなアニメーションを表示する事ができました。

ユニットコントロール解説
スプライトスタジオが生成してくれたプレハブに、このように【Unit Control】 というスクリプトを付けて制御しています。


バトルマネージャー解説
このプレハブは、【BattleMgr】オブジェクトにアタッチされている【UnitMgr】というスクリプト上の情報を見て自身(キャラクター)を動かします。

【UnitMgr】は、戦闘の「状態」に応じて、各キャラクターの情報を操作します。
現在動くべきキャラクター、攻撃対象などを選別し、各キャラクターの情報を変更します。
その変更を受け、各キャラクターの【Unit Control】 が移動やアニメーションを行う訳です。
移動やアニメーションが終了したら、【Unit Control】【UnitMgr】に終了した旨を返します。



■エフェクト

Unityは、エフェクトのアセットも多く、これといって苦労しないと思っていました。
しかし、パーティクルとスプライトスタジオのキャラクターとで、うまく表示順序を制御できない事態となっています。
具体的には、タテに3人ならんだキャラクターの真ん中にだけエフェクトを出したいと行った事が上手くできないのです。

もう少し頑張って難しいようならば、割り切ってエフェクトをスプライトにしようと思います。








◆つぶつぶ主人公HP◆  ◆サンプルダウンロードの一覧◆
2017.05.30 / Top↑
ちょっと体調不良という名の腰痛に悩まされている最中に、Unityの本を2冊ほど読みました。
信じられない事ですが、たったこれだけで、いろいろな疑問が消え、ある程度使いこなせるようになりました。

このツールは独学は駄目、マジで。
スクリプトを使えると言っても、ほぼ全ての機能が用意された「ツール」であり、「ツール」である以上、使い方を覚えるのが全てです。
そういう意味では、グラフィック系のツールだと思って覚えるのが良いようですね。

因みに特に良かったのは「この本」です。
※アフェリエイトなど一切なし、まじりっけなしの個人的なお勧め本です。

休んでいる内に、黒歴史ノートのまとめも終わり、ある程度次回作の形が見えてきました。
処女作「姫百合の乱」のような、戦記ものっぽいSLGになる予定です。

今回は、キャラユニットがある程度アニメーションして戦う形にしたいですね。
2017.02.21 / Top↑
お疲れ様です、連日の激務でフラフラですが、何だかんだと開発を進めています。
そんな訳で、本日はイベント実装の中核である、会話シーンの実装を行います。


■いろいろ検討

Unityで会話シーンを実装するにあたり、候補に挙がったのは以下の3点です。
①ジョーカースクリプトを使用する
②宴を使用する
③自分で作成する

当然、③は除外しました。会話シーンなんてものを自ら実装するなど、ゲーム開発ツールを使う意味がないです。
そんな訳で、ジョーカースクリプトと、宴をそれぞれ試してみました。

●ジョーカースクリプト
無料という事で、すぐに試してみました。
チュートリアルにそって実装すれば、簡単にノベルゲームを的なものを作れました。
ただ、ゲームの合間にイベントシーンとして、実装するには私の知識では中々厳しかったです。

・メリット
 無料!
 デフォルトの設定がそこそこかっこいい
・デメリット
 1年くらい更新してない
 同じ人が作っているノベルツールの更新が頻繁で、開発の比重がそちらに移っているのがわかる。

●宴
そこそこの値段のアセットです。
私が始めて買ったアセットになりますね。
チュートリアルにそって実装すれば、簡単にノベルゲームを的なものを作れました。
専用サイトに、会話シーンとして使う方法が記載されているので、そちらで実装しました。

・メリット
 専用サイトに豊富なチュートリアルや情報がある。
 日本語で質問できる掲示板が専用サイトにあり、丁寧なサポートが受けられる
 更新が現在進行形でされており、Unityの最新場に対応している
・デメリット
 有料
 デフォルトボタンやらは、後で変えることを前提としており、同人レベルとして厳しい

サポート機能の充実から、宴を選択してみました。


■宴の実装(会話シーン)

普通にノベルゲームを作るならば、宴は既に十分な機能を有しています。
しかし、私が作りたいのは、SLGやRPGなので、会話シーンとして実装したいのです。

上ではしれっと実装できました的に書いてますが、実際は専用サイトでのサポートを受けての実装です。
そんな訳で、ちょっとだけ癖があったので、それを紹介します。

基本的には、以下のサイトの情報をそのまま実行すればOKです
★宴を会話シーンとして使う★


アタッチ
画像では、Test1Mgrでイベントを呼び出す処理が書かれています。
※元記事では、端折られていますが、「AdvEngine」をアタッチするのをお忘れなく。
 私はここがイマイチわかっていなくて、素人丸出しの質問をしましたが、快くお応え頂けました。
 せめて、この恥ずかしいミスを1人でも犯さないようにすることで、禊としたいです。



前述の癖の話ですが、会話シーンなので、複数のシーンで使うことになると思います。
戦闘中だったり、宿屋で寝た時だったり。
しかし、実装された宴のゲームオブジェクトをプレハブ化して配置したところ、エラーとなり、ハマリました。
サイトで質問した所、プラハブ化には対応しておらず、コピーして別のシーンに配置するか、シーンに「シーンを追加」する方法で対応するかしかないとの事。
シーンにシーンの追加は分からなかったので、とりあえず、別のシーンにコピーした所、問題なく実行出来ました。
シーンにコピーするヤツ
宴使ってる人で、良い方法をご存知の方は、教えてください。


■次回予告とかその他

とりあえず、会話シーンを実装出来ました。これで吉里吉里にやや追いついた感じですね。吉里吉里の偉大さを感じます。
宴は複雑なトランジションはまだ実装していないらしいですが、吉里吉里でも殆ど使ってなかったから問題ないでしょう。多分。

現在はCanvas周りをいじっているので、次回はUI関連をやります。








◆つぶつぶ主人公HP◆  ◆サンプルダウンロードの一覧◆
2016.10.24 / Top↑