我是Unity平台的新手。我有2D游戏,其中包含10个盒子垂直跟随在链中。当一个盒子离开屏幕时,我将其位置改变到顶部盒子的上方。所以链条无限转动,就像重复视差滚动背景一样。为什么比较浮点值很困难?
但我通过比较它的位置和指定的浮点值来检查一个盒子是否熄灭。我在下面分享我的代码。
void Update() {
offSet = currentSquareLine.transform.position;
currentSquareLine.transform.position = new Vector2 (0f, -2f) + offSet;
Vector2 vectorOne = currentSquareLine.transform.position;
Vector2 vectorTwo = new Vector2 (0f, -54f);
if(vectorOne.y < vectorTwo.y) {
string name = currentSquareLine.name;
int squareLineNumber = int.Parse(name.Substring (11)) ;
if(squareLineNumber < 10) {
squareLineNumber++;
} else {
squareLineNumber = 1;
}
GameObject squareLineAbove = GameObject.Find ("Square_Line" + squareLineNumber);
offSet = (Vector2) squareLineAbove.transform.position + new Vector2(0f, 1.1f);
currentSquareLine.transform.position = offSet;
}
}
正如你所看到的,当我比较vectorOne.y和vectorTwo.y时,事情变得很难看。有些箱子会拉长,有些箱子会缩短彼此之间的距离,即使我在上面的代码中给出了确切的向量值。
我已经搜索了一个星期的解决方案,并尝试了很多代码,如Mathf.Approximate,Mathf.Round,但没有人设法正确地比较浮点值。如果团结从不以我期望的方式比较浮动值,我想我需要改变我的方式。
我在等你神仙的建议,谢谢!
编辑
这里是我的屏幕。我有10个盒子线垂直向下。
当Square_Line10熄灭屏幕。我将它的位置更新到Square_Line1的上方,但它们之间的距离意外增加。
我不认为浮点比较是你的问题,它似乎是一个逻辑错误。你能简化你的场景结构来隔离问题吗? – yoyo 2015-04-01 03:56:11
我通过添加屏幕截图来编辑帖子。 – 2015-04-01 18:49:24