質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Q&A

解決済

1回答

3016閲覧

unityでランゲームを作っています

chibarin

総合スコア13

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

0グッド

0クリップ

投稿2017/06/13 04:53

###前提・実現したいこと
今、unityで簡単なランゲームを作っています。
前から数パターンの壁を例えば何秒ごとにそのパターンの中からランダムで迫ってくる
ようなことをしたいのですがどうしたらいいですか。教えてください!
###発生している問題・エラーメッセージ

特になし

###該当のソースコード
//左の壁

// cube.transform.localScale = new Vector3(5, 3, 1); // cube.transform.position = new Vector3(6, 1, -20); //右の壁 //cube.transform.localScale = new Vector3(5, 3, 1); //cube.transform.position = new Vector3(-7, 1, -20); //ジャンプして避ける壁 // cube.transform.localScale = new Vector3(19, 0.4f, 0.5f); // cube.transform.position = new Vector3(0, 0.5f, -20);

###試したこと
特になし

###補足情報(言語/FW/ツール等のバージョンなど)
C# Unity 5.6.0f3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

###何秒ごとに処理する

何秒ごとに処理するにはコルーチンを使うといいです。WaitForSecondsとWaitForSecondsRealtimeを使う方法がありますが、オブジェクトを呼び出す用途で下記で使用しているWaitForSecondsが良いと思います。

C#

1 // 処理を繰り返す間隔 (ミリ秒で指定) 2 private static readonly float LOOP_TIME_INTERVAL = 2f; 3 // コルーチンをキャッシュ 4 private Coroutine chacheCorutine; 5 6 void Start() 7 { 8 //実行 9 StartLoop(); 10 } 11 12 //処理したい内容 13 void doAction() 14 { 15 Debug.Log("ACTION"); 16 } 17 18 //ループのスタート 19 void StartLoop() 20 { 21 if(chacheCorutine != null) StopCoroutine(chacheCorutine); 22 chacheCorutine = StartCoroutine( loopAction(LOOP_TIME_INTERVAL, doAction) ); 23 } 24 25 //ループの終了 26 void StopLoop() 27 { 28 if(chacheCorutine != null) StopCoroutine(chacheCorutine); 29 chacheCorutine = null; 30 } 31 32 //ループ処理 33 IEnumerator loopAction( float loopInterval, System.Action callBack ) 34 { 35 var interval = new WaitForSeconds(loopInterval); 36 37 while (true) 38 { 39 callBack(); 40 yield return interval; 41 } 42 }

###ランダムに処理する

Unityに良い関数が用意されていますが、ゲーム内にランダムで登場させる使い方に向いてない場合が多々あります。突き詰めていくと「ランダムにオブジェクトが登場するゲームで楽しかったことがあるのか?」という壁にあたりそうです。練習では良いと思いますが実用性に欠けます。

[コードの補足]
下記は使用するオブジェクトの数が少ない場合です。
多い場合はtransformなどの必要な情報を配列にまとめておいて読み出す方法やprefab化してリソースフォルダから読み出す方法などがあります。

C#

1 //使いたいオブジェクトを入れておく 2 GameObject[] objects; 3 4 //呼び出す 5 GameObject chooseRandomObject() 6 { 7 return objects[UnityEngine.Random.Range(0, objects.Length)]; 8 }

投稿2017/06/13 12:19

編集2017/06/13 12:27
IShix

総合スコア1724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chibarin

2017/06/14 04:13

そういう方法があるんですね!いろいろ試してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問