説明: こんにちは、私はC#で始まる非常に初心者のプログラマーです。私はユニティ3DのキューブをA点からB点に移動したいところに固執しています。ある時点に達すると、それを停止したいと思います。ループ中にオブジェクトを使用すると、オブジェクトが即座にジャンプする理由はありませんが、更新時にスムーズに移動します
問題: 私の問題は、オブジェクトを更新時に移動するとうまく動きます。条件を追加してwhileループに追加すると、ジャンプするだけです(コメントされたセクション)。チュートリアルや私が間違っていることに関する情報が見つかりません。私はループなどのチュートリアルをたくさん見ていましたが、それは私を助けませんでした。
望ましい結果:ループ
すべてのヘルプは を高く評価している間に点AとBの間キューブの スムーズな動きがUpdate()
方法としてのあなた
トーマス
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PujdeTo : MonoBehaviour {
public bool moveBox = true;
public float objectSpeed = 1;
void Start() {
}
void Update()
{
transform.Translate(Vector3.left * (objectSpeed * Time.deltaTime));
}
void FixedUpdate()
{
//while (moveBox == true)
//{
// transform.Translate(Vector3.left * (objectSpeed * Time.deltaTime));
// //transform.localPosition += Vector3.left * Time.deltaTime * speed;
// if (transform.localPosition.x <= -10)
// {
// moveBox = false;
// }
//}
}
}
あなたは同時に ')'アップデート() 'と' FixedUpdate(両方を使用していましたか?サイドノートでは、 'moveBox'はすでにブール値であるため、' moveBox == true'という条件は冗長です。代わりに 'while(moveBox)'だけを使用してください。実際には、 'while'ループ全体を取り除くことができ、' moveBox'変数は必要ありません。 – dabadaba
このコードは大きなものの一部です。そのため、ブールのものがそこにあります。 Grooからの回答は、私がそれを理解するのを助けました。とにかく素早い答えをありがとう。 – Tomas
私があなたが 'moveBox'変数を全く必要としないと言ったとき、私はGrooの答えが示唆したことを正確に意味していました:オブジェクトが移動するのを止めるために' moveBox'をチェックする必要はありません。常にロジックを単純化してみてください。 – dabadaba