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

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

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

1回答

658閲覧

オブジェクトが移動して停止した後に別のシーンへ遷移したい

suzumayu

総合スコア11

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2022/05/18 11:55

オブジェクトが移動して停止した後に別のシーンへ移動するスクリプトを組みたいのですが全くわかりません
どなたかご教授お願い致します。
Invokeも試してみたのですが動きませんでした

スクリプトは以下の通りです。

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class Ball : MonoBehaviour { float x_speed = 0; Vector2 startPos; bool stopFlag = false; // Use this for initialization void Start() { Invoke("Call", 3f); } // Update is called once per frame void Update() { // メソッドを呼び出す MoveSwipe(); } // スワイプして右に動かす void MoveSwipe() { if (!stopFlag) { // マウスが左クリックされたとき if (Input.GetMouseButtonDown(0)) { // マウスをクリックした座標 this.startPos = Input.mousePosition; } else if (Input.GetMouseButtonUp(0)) { // マウスを離した座標 Vector2 endPos = Input.mousePosition; float x_swipeLength = endPos.x - this.startPos.x; // スワイプの長さを速度に変換する this.x_speed = x_swipeLength / 800.0f; stopFlag = true; } } // オブジェクトを右に動かす transform.Translate(new Vector3(x_speed, 0, 0), 0); // 減速させる this.x_speed *= 0.98f; if (GetComponent<Rigidbody2D>().IsSleeping()) { SceneManager.LoadScene("GameOver"); } else { // do something } } }

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

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

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

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

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

suzumayu

2022/05/18 12:06

一部間違ってました void Test1() { if (GetComponent<Rigidbody2D>().IsSleeping()) { SceneManager.LoadScene("GameOver"); } } です
YAmaGNZ

2022/05/18 12:52

質問は修正できますので、ソースを修正しましょう
guest

回答1

0

Rigidbody2Dは物理演算を行うためのコンポーネントですが、transformに対して移動処理を直接書いても、物理演算シミュレートは行ってくれません。

cs

1// オブジェクトを右に動かす 2transform.Translate(new Vector3(x_speed, 0, 0), 0);

なので、GetComponent<Rigidbody2D>().IsSleeping()も動作していないと考えられます。
とりあえず停止判定がしたいなら以下のようになると思います。

cs

1if (this.x_speed < 0.01f) 2{ 3 SceneManager.LoadScene("GameOver"); 4}

投稿2022/05/19 05:10

KomoriGameDev

総合スコア433

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問