gpt4 book ai didi

C# 条件未触发

转载 作者:行者123 更新时间:2023-11-30 21:37:37 24 4
gpt4 key购买 nike

我在 Unity 中遇到了一个(可能很愚蠢的)初学者问题。

我在 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 的符号正在改变。我犯了一些明显的错误吗?

最佳答案

您可能希望lastx = this.transform.position.x更改右侧之前。正如您现在所拥有的,当您进行比较时,lastx 始终等于 this.transform.position.x

此外,无需使用 .Equals()。只需使用 != 即可。

Debug.Log(this.transform.position.x);
if (Math.Sign(this.transform.position.x) != Math.Sign(lastx) {
Debug.Log("Bang!");
}
lastx = this.transform.position.x;
this.transform.RotateAround(Vector3.zero, Vector3.up, OrbitSpeed * Time.deltaTime);

关于C# 条件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47063592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com