「EnDlEss DREamER」ブログ

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

§ unity5版 オブジェクトの表示・非表示

オブジェクトを任意に消したり表示させたりしたい。

でも、機能はそのままにしくて、あくまで表示のみどうにかしたい。

というためのメソッドを。









    /// <summary>
    /// オブジェクトの表示・非表示(true/false)
    /// </summary>
    /// <param name="status"></param>
    private void setVisible(bool status)
    {
        Transform root_transform = this.transform.root.gameObject.transform;
        Transform[] tr_child = root_transform.GetComponentsInChildren<Transform>();
        foreach (Transform tr in tr_child)
        {
            if (tr.GetComponent<Renderer>())
            { tr.GetComponent<Renderer>().enabled = status; }
            
            
        }
    }

ググると、案外古い記述ばっかりだったので備忘録的に。

renderer.rederer は古くてgetcomponent<Renderer>().enable = true;とかでないとダメ。





2017/08/23/Wed 23:29:25  unity/CM:0/TB:0/

§ unity 指定 オブジェクトの子 タグ指定 取得

例えば、プレイヤーの装備にあたる、剣のオブジェクトを取得したい。
でも、剣の名前は変わるので名前取得はできないからタグで取得したい。

というあるオブジェクトの子オブジェクトをタグ指定で取得ということをしたい時の処理。



var player_ewuip;
GameObject aaa = GameObject.Find("Player");
Transform transform = aaa.transform;
foreach (Transform child in transform)
        {
            if (child.tag == "tag")
            {
                //targetはGameObject型
                player_ewuip = child.gameObject;
            }
        }
という感じらしい!
ってナニコレ??だよね。
目的はplayer_ewuipに入れる、上記で言う戦車の主砲。
戦車の主砲は装備換装されるのでオブジェクト名で取得するわけにはいかず、タグで取得したい。
Playerの名前のオブジェクトをまず取得、aaaに入れる。
Transform型でaaaのtransformを入れる。
foreachでtransformから子を検索、child変数へ
if文でタグが一致したらplayer_ewuip へオブジェクトを格納。

ポイントは「子のオブジェクトを取得する」というところ。
FindGameObjectWithTagは全体から探すから、どれがどれなのか不明。
複数の敵や味方が居た場合には、確実にプレイヤーのものを取得してくれない。
これならば、そんな問題もない。




ちなみに、FindChildというコマンドはunity5系では推奨されていない。
Findと効果が同じらしいし。




2017/07/28/Fri 19:16:24  unity/CM:0/TB:0/

§ unity ゲーム進捗

WOTライクなモンハンを目指して、バトルタンクスターターキットというアセットを改造して作ってます。
目指せ!メタルマックス3D!!

いまんとこできてる(仮)ところ。

1.モバイル向けにUIを改造
2.避弾経始、装甲厚、装甲の角度の前後左右ざっくりと設定
3.砲弾の種類を設定した(7種類ほど)
4.右クリックで視点移動のみできるようにした。


というところ。
まだステージとか作る段階ですら無い。
操作周りやダメージ周りの根幹となるシステム部分を作っている。

今後は・・・・・

1.操作感をWOTライクに改造
2.オートエイムの実装
3.弾や車体などの動きがあやしいので調整
4.エンジン出力を設定して、出力に応じた速さに処理を作り直す。
5.装備の換装
6.ガレージの画面や装備変更、補給やアイテム購入、戦車の切り替えなどのシーン作成
7.ステージの作成
8.他の戦車でプレイヤーが動くかデバッグ
9.敵キャラの設定




キリがないな。
1~4で年内に終わるんだろうか???
武器換装やったらまた、エイム周り作り直すとか?
マルチロックとか???
射程距離をエイムに反映とか????
射程距離内の敵を配列で処理して、誘導弾とか処理めんどくさくね?????



完成には程遠いということですな。
なので、スクショも出せるような状態ではないっす。


2017/07/26/Wed 01:21:54  unity/CM:0/TB:0/

§ unity remote 5 動かない switch platform 高速化

なんかunity remote 5 がうまいこと動かないので備忘録。

まずは、環境確認。

1.端末のADBドライバ・SDK JDK NDKが入れてあり、unityの「preferences」の「external tools」で設定済み。
2.端末の「USBデバッグ」ON。接続モードは「テザリング」
3.端末のunity remoteを起動。
4.「edit→project settings→editor」から「unity remote」の項目を設定。
 「any android device」「joystick remote」を「remote」に。
5.「build and settings」で「android」にしてゲーム画面の解像度を「free aspect以外」にする。
6.一度、build&settingsでPCなどにしてからandridにする「switch platform」
7.エディタを再起動
8.テストプレイ

これで、なんとか動くはず。
引っかかるのは、2のテザリングモードとプラットフォームを切り替えて再起動すること。


ここで問題となるのは、switch platform。
とにかく遅い。

http://www.shibuya24.info/entry/2016/12/14/090000

ここに解決方法が書いてある。
ようは・・・

1.unityエディタ5.5以降の「preferences」「cache sever」を「local」に設定する。
2.切り替える。

で、初回は時間がかかるけど2回目からは速い。

番外編で、「preferences」「general」「compress asset」のチェックを外す。
というのもあるらしい。
キャッシュサーバーをローカルにできないときなどはこれ。
これでunity remote でのテストも捗る。


2017/06/26/Mon 20:30:27  unity/CM:0/TB:0/

§ CrossPlatformInputでtouchpadとbuttonを一緒に使う。重ねる、上にボタン。

昨日のスクショではボタンは押せるけど戦車は動かない状態だったんだけど、
結構ググッた結果、割りと簡単に解決できたので報告。

20170623 233555Greenshot

赤丸の部分がUI周り。
その中の赤ポッチ2つがタッチパッド2つ。
左が戦車の移動、右が砲塔の移動。
ボタンは3つで、大きいボタンが砲撃、Qが武器切り替え、Cが拡大。
タッチパッドの上にボタンが乗っかってるイメージで動かしたい。

MobileSingleStickControl以下で上から下に行くほど、優先順位が高い。
つまり、MoveTouchpadが一番下で、Fire3Buttonが一番上。
という動作順で間違いない。

ソースはここの記事。

CrossPlatformInputの挙動は別として、希望通りの動きになるようになった。


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