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

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

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

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

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

■Unityの実装

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

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

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

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

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

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

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

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




◆つぶつぶ主人公HP◆  ◆サンプルダウンロードの一覧◆
スポンサーサイト
2017.07.16 / Top↑
お世話になっております、つぶつぶ主人公の猫ダマシです

今更の告知ですが(まいどですね)、夏コミ受かりました。
11日(金)の東す18aです。

クーポンでめっちゃ安くなる、アマゾンのタブレットを買いましたので、前回動画を忘れた分を、2倍の画面で取り返します。
2017.06.19 / 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に取り込みたいですね。
新バージョン、2017が安定するのが先か、アニメーションが終わるのが先か。









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