C#
1if(col.gameObject.tag == "Ice") 2{ 3 rightbody2D.velocity = Vector2.zero; 4 System.Threading.Thread.Sleep(3000) 5}
このように打って氷に当たった時にプレイヤーキャラクターをアニメーション含めて一時停止させようとするとゲームごと止まってしまい、どのように改善すれば行けるかわからないです・・・。ご教授お願い致します・・・。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
描画以外の全ての処理を止めたいのなら、以下のURLが参考になりそうです。
[Unity] ポーズ動作をTime.timeScale=0を使わずに実現する
後はコルーチンを使って停止→三秒待つ→再開と実装すればできると思います
C#
1 2if(col.gameObject.tag == "Ice") 3{ 4 StartCoroutine( Pause() ); 5} 6
C#
1IEnumerator Pause(){ 2 Pauser.Pause(); 3 yield return new WaitForSeconds( 3.0f ); 4 Pauser.Resume(); 5}
投稿2016/12/15 05:29
編集2016/12/15 05:32総合スコア1294
0
ソースが一部しかなく全体像が見えてこないので、漠然とした回答しかできませんが...
氷に当たったフラグを用意し、氷に当たった時点(質問文のif文)に入った時点でtrueにします。また、この時氷に当たった時点の時間を保存しておきます。
氷に当たったフラグがtrueの間はアニメーションや描画の更新を行わないように(更新処理を通らないように)します。
氷に当たった時点の時間から3000ミリ秒以上経った場合に氷に当たったフラグをfalseにする処理を入れます。
こうすれば、氷に当たってから3000ミリ秒の間はアニメーションの更新が行われないようになるはずです。
投稿2016/12/15 03:46
総合スコア486
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
Unityでこの手の一時停止をする場合はコルーチンを利用することが一般的だと思われます。
簡単な形だと以下のようなソースになると思われます。
C#
1void OnCollisionEnter( Collision col ){ 2 if ( col.gameObject.tag == "Ice" ){ 3 rigidbody2D.velocity = Vector2.zero; 4 StartCoroutine( "katamaru" ); 5 } 6} 7 8 9 10// コルーチンで一時停止. 11private IEnumerator katamaru(){ 12 13 // 停止したい時間(仮に1秒) 14 yield return new WaitForSeconds( 1.0f ); 15 16 yield return null; 17}
但し動作の停止をrigidbody2D.velocityでzeroを代入していますがおそらく次のフレームにまた動き出すかと思います。
なので以下の方法が良いかもしれません.
C#
1void OnCollisionEnter( Collision col ){ 2 if ( col.gameObject.tag == "Ice" ){ 3 StartCoroutine( "katamaru" ); 4 } 5} 6 7 8 9// コルーチンで一時停止. 10private IEnumerator katamaru(){ 11 12 // 一秒停止. 13 float time = 0.0f; 14 while ( time < 1.0f ){ 15 time += Time.deltaTime; 16 rigidbody2D.velocity = Vector2.zero; 17 yield return new WaitForSeconds( 0 ); 18 } 19 20 yield return null; 21} 22
テストしていないのでこれで良いかはわかりませんが解決の糸口になればと思います。
そのほかコルーチン系はいろいろ使い道があるので調べてみると良いかもしれません。
投稿2016/12/15 04:34
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/15 05:37