「EnDlEss DREamER」ブログ

最近はunity5メインで活動中。以前はツクールRGSSネタなど。

§ uGUIでHUD表示!作成中

OnGUIが重くて&本来はデバッグ用の用途ということで、しばらくuGUIを触っていた。
照準とかを大本のcanvasの子に照準用canvasを作り、そこにイメージを作成。
スクリプトで座標を設定して動かす。
武器ごとに照準テクスチャを変えるなどやったり。

それと一緒に、HUD表示も作成。
以下のような感じ。


通常視点
20180413 233759Greenshot

拡大視点
20180413 233808Greenshot

周囲確認カメラ
20180413 233813Greenshot


ポイントはいくつかあって・・・

・HPゲージ
・アイコンが¥はオブジェクトの子でworld spaceなcanvas。
・world spaceなcanvasで常にオブジェクトの手前に表示。こちら参考
・黒いテキストは距離計で、画面中央からレイを飛ばして、プレイヤー戦車から対象までの距離を表示。
・HUDは通常視点と拡大視点で大きさが同じぐらいになるようにscaleを自動調整。
・周囲確認用のカメラでも距離を表示できるようにした。


というところ。
ちょっとずつWOTライクな感じになってきた♪


2018/04/14/Sat 00:00:36  unity/CM:0/TB:0/

§ OnGUIは重い。デバッグ用だと。

Profilerでどこが重いか検証していると、GCがすっげぇ行われていてどこかと思ったらGUI関係。

で、調べた結果、OnGUIが原因らしい。

ベースとなるアセット「BattleTankStarterKit」では結構OnGUIで処理されているところが多い。
これをWoTBlitzライクにしている最中なので改造がかなり大変で、システム周りから脱していない。
これをuGUIに変更していく作業が待ち受けているので、さてどうしたものか。

20180330 233319Greenshot

まだまだ開発中だけど、今日の成果。

戦車の上にHUDが表示されています。
中は中戦車(MTに変更予定)に隣は戦車名であるM4A3E8シャーマン。
ちゃんとprefabで複製してもcloneの文字を消しています。
で、HPゲージ周り。
最後にミサイルなどのマルチロック時に表示されるマーカー。
画像では1つの戦車のみですが、複数ロックしていれば全部表示されます。



元のアセットから変更したヶ所

・モバイル向けUI
・ミニマップ
・右ドラッグでの視点のみの移動
・戦車へのアウトライン表示
・戦車の部位別装甲厚設定
・砲弾の種類と種類別の貫通力設定
・避弾経始計算処理
・レーダーシステム(レーダー範囲外の敵は表示されない)
・純正であるミサイルをマルチロック方式の追加。
・なんちゃってオートエイムの実装




ざっとこんなところ。
OnGUIをuGUI処理に変更したあとはインベントリマスターを入れて、戦車の装備システムに手を付けて
武器の換装を行えるようにしたいし、UIも仮のまんまなのでなんかいいデザインのものを用意したいし
処理の軽量化も重要な問題。
避弾経始周りの動作確認やオーディアマネージャーを入れたので、効果音を随所に入れてというのもある。


やることはまだまだいっぱいだぁ・・・


続きを読む
2018/03/31/Sat 00:22:27  unity/CM:0/TB:0/

§ unity AudioManager

http://kan-kikuchi.hatenablog.com/entry/AudioManager

これを使えば快適!!

詳しくはリンク先で説明されているんだけど、シングルトンとかジェネリクスっての使っている。

シングルトンはツクールRGSS/RUBYでいうモジュールに近いものかな??
どこからでも使えるけど、全体で1つしかないもの。
普通は obj = new Class();でobjが違えばClassは一緒でも中身は別という、村人Aと村人Bぐらい違うもの。
シングルトンはそれ唯一で別を作れない。王様のみ。王様Aと王様Bは存在し得ない。


ジェネリクスはテンプレートのようなもの。
AとBというクラスは使用する型が違うけど処理はほぼ同じ。
いちいちAとBを書くのはめんどい。
Sという共通する部分を作って、それをABに継承させちゃおう。
というもの。


MonoBehaviourというunityの機能満載なクラスを継承したシングルトンが上記リンク先で載っている
「SingletonMonoBehaviour」
これを使って作ったのがAudioManagerというものらしい。



こういうの欲しかった!!


日本語で、ちゃんと作ってるやつ。
これを流用して、VocabManager(ボキャブラリーマネージャー)つまり、言語・言葉を管理するものとか作ろうかな?
共通する単語や言葉・会話を管理するマネージャー。
ツクールであったね。
画像のキャッシュとかもモジュールでやっていたな、RGSS。





2018/03/16/Fri 12:11:40  unity/CM:0/TB:0/

§ 索敵 OnTriggerExit destroy

OnTriggerExitではオブジェクトがDestroyされたときは呼ばれない。

Destroyされると、コライダーの接触が「離れる」のではなく「null」になるため。
つまり、離れたか判定する前に消えたことになるから処理そのものが行われない。

方法は2つほど。

1.Destroyする前にどっかに動かしてOnTriggerExit実行。実行後元の位置に戻してDestroyなど。
2.objectoがnullであることは確認できるので、それを条件に行いたい処理を記述する。

1の場合は、意図的に実行させる。
2は別途コルーチンとかを使って、監視する。

なんかいい方法無いかな???
軽量な索敵システム。




2018/03/13/Tue 00:41:00  unity/CM:0/TB:0/

§ 索敵 システム 指定範囲 collider OnTrigger Enter Exit 子 コライダー

索敵システムを作っていて、未だ未完成ではあるんだけど考え方だけ。
まず、索敵は指定範囲内に入ったオブジェクトを全て取得するというもの。
OnCollisioonでは使えない。
他に、Physics.OverlapSphereでもいいけど重たい。
コルーチンで処理させても結構な負荷。
これを敵にも採用したら、ものすごい数になるので・・・
ということで、Triggerでやってみる。


キャラとなる親Aが居て、子に探索用コライダーをつける。
子はSphereColliderにisTrigger、リジッドボディにキネマティックを設定。
これをBをとする。

で、ここのサイトのスクリプトを使用。

子にChildeColliderTriggerを。親にはColliderTriggerParent を。
このスクリプトは、子のOnTriggerEnterで親のメソッドを呼び出して処理を行うというもの。
親に子の処理を書く感じ。
子が複数なら、オブジェクト名などで分岐してやるといいかも。switch文とか。

で、BのOnTriggerで接触したオブジェクトが居たら、Aのスクリプト内で処理を記述するんだけど
その際に、Listでリスト変数をパブリックで作る。
それに、addしてやれば無事に接触したオブジェクトを管理できる。


問題は、このリスト変数ってのはめんどくさいことだ。

http://sorasorasora.hatenablog.com/entry/2016/01/08/224058

参照型の変数ってやつで、普通の感覚で使っているのは値渡しと言って値を変数に入れる際には
コピーして入れているような感じ。
対して、参照渡しってのは、その変数には値の在り処を入れている。
そのあたりの説明が上記リンクにある。

ついでにいうと、作成したListをディープコピーするにはこのサイトのやり方を行う。
新たにリストを作り、引数にコピーしたいListを入れる。

というのを踏まえて、OnTriggerで取得したオブジェクトをリストに追加する。
publicなListを作業用のtempListとか作って、そっちに入れて、それを子メソッドでaddする際にはref tempListとか入れて
refで渡して、子のメソッドでaddする。変更後のListをreturnで返し、上記のディープコピーでpublicのListni入れる。

という流れなんだけど、Listってめんどくさい!!!



今作ってる索敵システムは、レーダー、視界、射撃の範囲を索敵していて
視界に入ると敵が表示、武器によって射撃の索敵範囲が変わる
視界外は敵が消える
というような感じ。

ベースとなるアセットで武器にミサイルがあり、同時発射数とか何連射できるとかあったので
ついでにマルチロックミサイルを作ってみた。
指定範囲内の敵にミサイルを発射する。
ミサイルの飛んでく対象とかも敵の数によって対象を変更したりもやってみた。
ビーム兵器にでも変更したらハイマットフルバーストみたいのできるかな???




2018/03/08/Thu 00:25:21  unity/CM:0/TB:0/
MAIN / NEXT
copyright © 2006 「EnDlEss DREamER」ブログ. All Rights Reserved.
Template by TAE-3rd☆テンプレート工房