私はUnityで(おそらく愚かな)初心者の問題を抱えています。C#条件がトリガーされない
私は周回惑星に添付スクリプトのUpdate
でこのコードを持っている:
Debug.Log(this.transform.position.x);
if (!Math.Sign(this.transform.position.x).Equals(Math.Sign(lastx)) {
Debug.Log("Bang!");
}
this.transform.RotateAround(Vector3.zero, Vector3.up, OrbitSpeed * Time.deltaTime);
lastx = this.transform.position.x;
。球がy = 0の軸を横切るたびにトリガされるはずです。別名、記号が変わります。
ただし、デバッグログ出力はXの符号が変化していることを確認します。私は何らかの明白な誤りをしていますか?
['Mathf.Approximately'](https://docs.unity3d.com/ScriptReference/Mathf.Approximately.html)を使用してください。 'もし(Mathf.Approximately(this.transform.position.x、lastx))..... ..... – Programmer
@Programmerいいえ、彼は2つの値を比較していません。彼は2つの値の兆候を比較している。 (私の答えを参照してください) – DodgyCodeException
うん、私は 'Math.Sign'のパスを逃した。 – Programmer