「EnDlEss DREamER」ブログ

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

§ マルチロック その1

戦車ゲー純正のアセットでミサイルのprefabがあって、誘導弾を飛ばすことができる。
ロックオンターゲットも画面に見える敵に対して名前表示したり別のアイコンが表示されたりと結構凝っている。
なのに、1つの敵に対してしか攻撃できない。



これはなんとかせねばっ!!


ということで、作成中。
同時発射数とか連射数とか設定があり、発射処理では同時発射処理でループ処理して弾にターゲットや
タグなどの値を代入して発射→弾のスクリプトで移動処理という流れ。
ターゲットはレイを飛ばして当たった相手にしているみたいで、そこをレーダースクリプトで取得した範囲内対象をベースに処理。
素のスクリプトをなるべく変えずにやりたい。
発射処理周りで分岐して、弾のループ処理のインデックスと攻撃対象の配列のインデックスと連動するようにしてベースができた。
何回かに一回はちゃんと別々の対象へミサイルが飛んでくようになった。





2018/02/14/Wed 14:31:52  unity/CM:0/TB:0/

§ unity 戦車 敵の名前表示 GUI.label などなど

ブログの更新もネタもままならないmitsu-evoです。
最近はFGOにはまってます♪
チョコ6000万までなんて行けるかな??
早く嫁王が欲しいこのごろッ!

未だタイトルの決まっていないWOTライクな操作のモンハン+MMなゲーム。
システム周りが未だ完成には程遠いんですが、大きく進んだのでちょっとスクショを。


20180211 163145Greenshot
20180211 163034Greenshot

まずは、ミニマップ。
レーダーを独自に実装して、レーダー範囲、視界範囲、射程範囲の3つをoverlapSphereをコライダーを使って処理
視界外の敵をレイヤー変更にて見えなくしています。
それを上空に設置したカメラから撮影、レーダーの距離でカメラの範囲も動く。

次に、敵の表示周り。
スクショで敵戦車は赤。味方は緑で表示されているコレ。
アウトラインのスクリプトをどこからか探して、つかっています。
アウトライン表示の際に、近くに表示されている文字はGUI.labelで表示されています。

https://qiita.com/phi/items/2d89b3fca3387c92f28d

から、文字列拡張を使って文字の表示周りを拡張して記述を簡素化しています。
GUIStyleやGUIStyleStateも使って一応フォントも変えたりしています。


オートエイム
そんなしっかりしたものじゃないけど、WOTライクなあるのか無いのか微妙なオートエイムを実装しました。
動作に関しては今後、調整するでしょう。




今後やらなきゃいけないことはたくさんあって、あげればキリがないから言わない。
一番の難題はインベントリシステムを組み込むこと。
装備の換装や戦車の装備スロット関係は必須。
さすがに、本家MMみたく主砲を5門も6門も積んでも意味がない(大口径砲を1つあればいいじゃん)
50mm×2より88×1 100mm×3 より200mm×1 がいいに決まってる。
副砲やSE的なミサイルやロケットなど実装していきたいので。



世界観的なもので、オープンワールドやりたい気もするし、大変だからやめたい気もするところで迷いも生じている。
戦闘システム作っていて、インベントリも実装するなら避けられないんじゃないかとも思うんだけどね。



ちなみに、メルカリでCube i7Bookをポチりました。
売上金含めて出費は安く手に入りそうだったので。
10.6インチなcore m 6y30っていいじゃん。
thinkpad8もそれなりに活躍はしたんだけどね?
chrome立ち上げながらunityでスクリプティングとなるとそれなりにスペックが必要で・・・・・・
atomじゃ役不足なわけですね。64bit 4GBメモリでもね。
発熱対策はしなきゃいけないんだろけどね。中華タブレットだし。

中華タブ改造周りをやるときは

http://pcpartssoft.ria10.com/

でやっていきたいと思います。
とりあえずはアマゾンで銅板でも買って入れるところからなのかな?



続きを読む
2018/02/11/Sun 17:02:18  unity/CM:0/TB:0/

§ 効果音や音楽

なかなか戦車に使えそうなSEってアセットストアでもなかなかない。
音楽については、以前にツクールVXで作った「REON」ってゲームで
魔王魂様の素材を使わせて頂いたのを思い出し、また使おうかなと思っとります。
ロック調やメタル風とかを扱ってるところってなかなか無くて。


効果音どうしようかな・・・・


2018/01/05/Fri 23:21:59  unity/CM:0/TB:0/

§ コルーチンとコールバックと他のコルーチンの処理終了まで待つ

みなさん、あけましておめでとうございます、mitsu-evoです。
タイトルどおり、複数のコルーチンの処理を待ってから結果を受け取って、次のコルーチンの処理に
というのをやりたくて備忘録。

https://teratail.com/questions/71632

上記リンクを参考に処理を組んでみた。
他にも

https://qiita.com/sune2/items/a3fe657b59f25016dc52#%E6%A9%9F%E8%83%BD%E4%B8%80%E8%A6%A7

なども参考になるかもしれない。
mitsu-evoの場合には、結果も欲しかったのでうまく使えなかった。

ようは「yield return new WaitUntil(() => i == 2)」とwaituntilを使って待てば良いということ。

https://teratail.com/questions/71632
のコードを参照。簡単に解説。

まずは、親となるIEnumeratorで作ったコルーチンメソッド。例えば★とする。
その中で子となるサブコルーチンを複数作成。例えばAとBとC。
AとBを処理して、結果を取得してからCを処理。を繰り返し。

int i = 0;
System.Action callback = () => i++;
StartCoroutine (SubCoroutine("A", callback));
StartCoroutine (SubCoroutine("B", callback));
// i が 3 になるまで待つ
yield return new WaitUntil (() => i == 2);
StartCoroutine (SubCoroutine("C", callback));

★の中での処理。
まずはAとBをstartcoroutineで実行。
yield return new WaitUntil (() => i == 2);
が満たされるまでAとBの処理が繰り返される。
iはラムダ式とか言って、SubCoroutine末尾で引数callbackが実行されたらiが加算される。
yield return new WaitUntil (() => i == 2);
が満たされたら、Cのコルーチンを実行。

リンク先のコードではStartCoroutineを文字列指定で実行されているが
IEnumerator型変数に入れてから実行するとCurrentで結果を受け取れる。

IEnumerator Coroutine = SubCoroutine();
startcoroutine(Coroutine);
var s = ()Coroutine.current;

などのように。
結果を変数に入れてCコルーチンで処理。
末尾まで行ったらi=0と他初期化。
これらの処理をwhile(true)で繰り返し処理。
というのが★メソッドの実行内容。

この★コルーチン=親をstarメソッド内で実行。
unityではmovenextはupdate時に実行されるらしい仕様だから何も記述なし。


ここで注意したいのは、AとBのコールバックを間にメソッドを挟むとうまくコールバックされない。
まぁ、自分が知らないだけなのかもしれないけど。
★メソッド内で直接startcoroutineして、子のコルーチンの最後にcallback();するといい。
あとは、whileで常時繰り返し処理を組んでおかないと、ただ一連の処理を作っただけでは、末尾に行った時点で
処理が終わってしまうこと。
updateメソッド出ないで常時movenextはされるが、処理を進めるだけで普通のupdateのようにメソッドを呼び出して
頭から処理をやり直すわけではないこと。
コルーチンは繰り返し処理などによく使われるという説明が多いので、分かっていたつもりになっていたけど
色々と盲点があって難しい・・・・・・








2018/01/04/Thu 17:03:15  unity/CM:0/TB:0/

§ unity C# foreachでは子しか取得できず孫は取得しない。ついでに、stopcoroutineは一時停止で完全停止じゃない

 タイトル通り、ちょこっとハマりました。
敵戦車の表示と非表示をするのに、ネット上で見つけてきた「オブジェクトの子まで」をレイヤー変更するという
ゲームオブジェクトの拡張クラスを使っている時の出来事。

やることは、レーダーで敵戦車を察知するが姿は見えない。
視界範囲に入って初めて敵戦車が表示される。
というWotなシステムの再現をしようとしているときのこと。
表示・非表示はレイヤーを変更して衝突判定をあらかじめ非表示レイヤーでは行わない設定。
そうすることで、見えないけどオブジェクトは有効で移動もする。
でも、見えないし攻撃も当たらない。

で、事件は起こった。
戦車の「砲だけ見える」という残念なバグだ。
結果から言うと、foreachとgameobject.transform.root.gameobjectとかそういう記述で親から子へ処理をしていたわけだけど

http://kazuooooo.hatenablog.com/entry/2015/08/07/010938


で、解説されてるように「子まで」を取得する仕様らしい。
だから「孫オブジェクト」まで処理しなかった結果、砲のみレイヤー変更されてなかった。
なんでこんな仕様なんだよ??





ついでにもういっこ。
コルーチンで、スタートしてストップすれば処理は終わるものと思っていたんだけど実は、stopcoroutineでは一時停止だけで
次にstartcoroutineすると、続きから処理を行う仕様らしい。
解決には、コルーチンの変数にnullを入れてやるといいらしい。









さて、ここ半年やってるFGOネタ
大好きな嫁王を夏のネロ祭りでは引くことができず、以降のガチャ全てを我慢してついにクリスマスでエレシュキガルにつっこんで、200連目ぐらいでようやくゲット。
イベント☆後5礼装を凸ったり、カレスコや鯖は刑部姫にキャスギルとアナの宝具1という当たるや礼装ばっか。
初のカレスコで周回がかなり捗るようにはなったけど。
槍玉藻にエレちゃんにエリちゃん、邪ンタと槍が充実しまくった。
弱かった弓鯖もエウエウとアタランテの他にアルテラサンタという強力な単体宝具持ちが加わってラッキー!!
イベント鯖サマサマで、金時やブレエリ、メカエリには特にお世話になってる。
☆5鯖は術ネロ、槍玉藻、エレちゃん、孔明、青王、ドレイクぐらいか。
クリスマスは30箱が限界!
子持ちは100とか無理です。日々忙しいんです。

そんなイベントも終わり、セイレムをクリアしました。
アビゲイルが厄介でしたね。
個人的にアビゲイルといえば、「冥界の預言者」と呼ばれる暗黒の僧侶しか思い浮かばない。
そうですよね、美しいお嬢さん?

さて、そんな感じでFGOやりながらunityで戦車ゲー作ってます。
オープンワールドなゲームも良さそうだなーと妄想はしますが、スマホでオープンワールドって大変そう。
個人制作なので数年掛かりそうだし。
未だゲームの根幹部分もできてないという・・・
避弾経始にオートエイムに視界システム。
次に、メタルマックスっぽく主砲副砲に特殊武器の数々のシステム周り。
システムづくりで手一杯だという所で、今年を締めくくろうと思います。
来年こそは、α版ぐらい出せたらいいと願って。
では、皆様良いお年を・・・・・








2017/12/29/Fri 01:24:12  unity/CM:0/TB:0/
MAIN / NEXT
copyright © 2006 「EnDlEss DREamER」ブログ. All Rights Reserved.
Template by TAE-3rd☆テンプレート工房