C# 单位变换位置为';t变换位置

C# 单位变换位置为';t变换位置,c#,unity3d,C#,Unity3d,我试图将边框的位置更改为刚好离开屏幕顶部。我是通过在屏幕顶部添加对象比例的一半(因为它在中间居中)来实现的。然而,当我这样做的时候,一切都没有改变。我打印出了坐标,上面说它移动了,但没有。这是我的代码(来自WallScalar类中的Start()方法) 注意:以下代码是WallScalar类中唯一的代码,此脚本应用于“顶级”游戏对象 transform.position = new Vector3(0, Camera.main.orthographicSize + (t

我试图将边框的位置更改为刚好离开屏幕顶部。我是通过在屏幕顶部添加对象比例的一半(因为它在中间居中)来实现的。然而,当我这样做的时候,一切都没有改变。我打印出了坐标,上面说它移动了,但没有。这是我的代码(来自WallScalar类中的Start()方法)

注意:以下代码是WallScalar类中唯一的代码,此脚本应用于“顶级”游戏对象

      transform.position = 
      new Vector3(0, Camera.main.orthographicSize + (transform.localScale.y / 2), 1);

      print("yCoor: " + transform.position.y);
由于对象的比例为1,且顶部为y=5,因此对象应放置在y=5.5f。有了打印声明,它说它在y=5.5f,但它没有在我的屏幕上移动。以下是有关详细信息的图像:

正如你所看到的,它说它被移动到yCoor=5.5f,但它没有,因为当我手动为y键入5.5时,它是不可见的,它只是在屏幕外。 如果您能帮我弄明白这一点,我们将不胜感激

更新:如果我放入打印语句,如

      print("yCoorU: " + transform.position.y);

在我的更新方法中,它的读数是y=5,因此有人强迫它返回到5,但要知道,没有其他任何东西可以调用脚本应用到的“Top”游戏对象。

因为你要除以int,我认为
transform.localScale.y/2
的结果可能是0而不是0.5(虽然我不理解为什么打印会给出正确的值)

因为你是除以一个int,我认为
transform.localScale.y/2
的结果可能是0而不是0.5(尽管我不理解为什么打印会给出正确的值)

我通过将父对象的Y值设为0.5来复制您的问题。确保您的父对象的Y值为0,0,0

我通过将父对象的Y值设为0.5来复制您的问题。确保您的父对象的Y值为0,0,0

因此,我发现您必须禁用当前的对象尝试更改位置,设置位置,然后启用它

Player.SetActive(false);
Player.transform.position = new Vector3(PositionX, PositionY, PositionZ);
Player.SetActive(true);
这可能是因为在游戏过程中,玩家或您试图移动的对象处于静态模式


Chirag Shah

所以,我发现你必须禁用你试图改变位置的对象,设置位置,然后启用它

Player.SetActive(false);
Player.transform.position = new Vector3(PositionX, PositionY, PositionZ);
Player.SetActive(true);
这可能是因为在游戏过程中,玩家或您试图移动的对象处于静态模式



希拉格·沙阿(Chirag Shah)

墙标量脚本是做什么的?也许它会把你的墙移回5?@UriPopov我会编辑并澄清,这就是你上面看到的代码所在。你的正交摄影机的大小是多少?另一个问题。墙是0,0,0处Top的父对象吗?@UriPopov是,它的大小是5。墙标量脚本是什么是吗?也许它会把你的墙移回5?@UriPopov我会编辑并澄清,这就是你上面看到的代码所在的地方。你的正交摄影机的大小是多少?另一个问题。墙是0,0,0处Top的父对象吗?@UriPopov是,它的大小是5**camera.main.orthographicSize**
+(transform.localScale.y/2)
。你忘记了
+Camera.main.orthographicSize
部分。因此获得float在这里并不奇怪。我不认为这有什么区别。括号中的部分可能是为了让我读错你的答案。我的评论是对我不明白为什么你的打印会给出正确的值的回答。我以为你说我不明白为什么你的打印会给出一个浮点值。我再次读了一遍,发现这是一个不同的东西…**Camera.main.orthographicSize**
+(transform.localScale.y/2)
。你忘记了
+Camera.main.orthographicSize
部分。因此获得float在这里并不奇怪。我不认为这有什么区别。括号中的部分可能是为了让我读错你的答案。我的评论是对我不明白为什么你的打印会给出正确的值的回答。我以为你说我不明白为什么你的打印会给出一个浮点值。我再读一遍,意识到这是一个不同的东西…是的,我仔细检查了。我唯一能想到的是,父对象的规模可能会影响它。是的,我仔细检查了。我唯一能想到的是,父对象的规模可能会影响它。