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

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

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

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

Q&A

2回答

1732閲覧

画像の取り入れ方

sakazaki

総合スコア15

Unity

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

0グッド

0クリップ

投稿2015/09/22 23:09

ゲーム中に挿絵のような画像を取り入れるためにはどのようにすればよいでしょうか?

たとえば、オブジェクトが消えたことを契機に、2秒間ほどゲーム画面上に消えたオブジェトの画像を表示したいのですがどのようにすればよいのでしょうか?

一応、Canpasにイメージとして画像を張り付けておき、非表示にしていたものを任意のタイミングで、表示するようにできるということはわかりました。ただ、消えたことを契機に表示するためのスクリプトの書き方と、2秒間という時間の設定の仕方がわかりません。
ご教授ください。

よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

基本的にはtakirenさんの方法で良いと思います。
ただ「表示を2秒間残したい」という目的に対しての解決策としては、消してから2秒の寿命を持つ新しいオブジェクトを作るよりも、オブジェクトの消去自体を2秒遅らせる方が簡単かつ効率的です。

この方法をとる場合、以下の様なメソッドを定義してコルーチンを使うと良いでしょう。

csharp

1IEnumerator waitAndDestroy(float waitTime) { 2 yield return new WaitForSeconds(waitTime); 3 Destroy(gameObject); 4}

上記のメソッドの呼び出し側は以下の様になります。

csharp

1StartCoroutine(waitAndDestroy(2.0f));

もちろん、消去するオブジェクトが残っているとゲーム全体に悪影響を及ぼす場合はこの方法をそのまま使うことはできません。
その場合はtakirenさんの方法を取るか、周囲に影響を及ぼすコンポーネント(例えばCollider)だけ先に削除してからStartCoroutineを呼び出すなどの工夫が必要です。

参考:
【Unity】時間を指定して、その後関数を呼び出す

投稿2015/09/24 00:59

編集2015/09/24 01:03
hy3

総合スコア594

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

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

takiren

2015/09/24 06:20

この方法のほうが256倍いいと思います
guest

0

消えた瞬間→消す処理の少し手前で寿命が2秒間の(消える予定と同じ見た目の)ゲームオブジェクトを生成

c#

1Gameobject test; 2public Gameobject example;//exampleが見た目の同じオブジェクト(prefab) 3//中略 4test=Instantiate(example);

みたいなかんじでどうでしょう。
あとは
Time.realtimeSinceStartupを利用して時間を計測して2秒たったら自身を破棄。これは見た目が同じオブジェクトのスクリプトにアタッチしてください。

C#

1private float stime; 2 // Use this for initialization 3 void Start () { 4 stime =Time.realtimeSinceStartup; 5 } 6 7 // Update is called once per frame 8 void Update () { 9 if (Time.realtimeSinceStartup - stime >= 2.0f) 10 { 11 Destroy()this; 12 } 13 14 }

ただパフォーマンス的に良いアプローチじゃない気がしますね。
消さない方がいいと思います。

投稿2015/09/23 12:31

編集2015/09/23 12:38
takiren

総合スコア63

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

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

takiren

2015/09/23 12:39

if (Time.realtimeSinceStartup - stime = 2.0f)じゃない理由は不安だからです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問