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

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

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

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

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

2968閲覧

一定時間待たないと次の処理が行えないようにする方法

actionstudio

総合スコア39

Unity3D

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

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/01/18 13:28

#現在行っていること
スペースキーを押してあるオブジェクトのクローンを出現させます。
#実現したいこと
しかし、スペースキーを連打すると何度も出現してしまいますが、それを制限したいです。
#試したこと
コルーチンをつかって、スクリプトを停止しようとしましたが、呼出し後に停止されるだけで、制限できませんでした。
どのようにすればいいか教えていただきたいです。

C#

1public float dogLimit = 1.0f; 2 3 public GameObject dogPrefab; 4 5 // Update is called once per frame 6 void Update() 7 { 8 StartCoroutine("dog"); 9 } 10 11 IEnumerator dog() 12 { 13 yield return new WaitForSeconds(1.0f); 14 // On spacebar press, send dog 15 if (Input.GetKeyDown(KeyCode.Space)) 16 { 17 Instantiate(dogPrefab, transform.position, dogPrefab.transform.rotation); 18 yield return new WaitForSeconds(dogLimit); 19 } 20 }

#環境
unity 3D

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

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

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

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

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

guest

回答2

0

ベストアンサー

Update内で時間を管理すために新しくfloatを作ります。
この値がdogLimitを超えていた場合処理を通すようにします。

C#

1public float dogLimit = 1.0f; 2float currentDog = 0; //現在の時間 3 4 public GameObject dogPrefab; 5 6 // Update is called once per frame 7 void Update() 8 { 9 10 currentDog += Time.deltaTime; 11 if(currentDog >= dogLimit && Input.GetKeyDown(KeyCode.Space)) //currentDogが上限を超える&スペースキーを押したとき 12 { 13 Dog(); 14 currentDog = 0; 15 } 16 17 } 18 19 void Dog() 20 { 21 Instantiate(dogPrefab, transform.position, dogPrefab.transform.rotation); 22 }

投稿2021/01/18 14:40

編集2021/01/18 14:41
Yukirr4_

総合スコア728

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

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

actionstudio

2021/01/18 22:11

丁寧に説明して下さりありがとうございます。
guest

0

基本的にUpdateを回さないとフリーズするだけなんで、Update中で経過時間を測って、タイムオーバーを判定しましょう

投稿2021/01/18 13:33

y_waiwai

総合スコア88042

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

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

actionstudio

2021/01/18 22:11

時間計測はUpdateを回すべきなのですね。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問