Unity变换位置不会改变位置

时间:2016-05-11 08:11:33

标签: c# unity3d

我正在尝试将边框的位置更改为屏幕顶部。我通过取屏幕顶部,然后添加对象比例的一半(因为它在中间居中)来做到这一点。但是,当我这样做时,根本没有任何变化。我打印出坐标,它说它移动了,但它没有。这是我的代码(来自WallScalar类的Start()方法)。

注意: 以下代码是WallScalar类中唯一的代码,此脚本适用于" Top"游戏对象。

      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但它没有在我的屏幕上移动。这是一张更多细节的图片:

enter image description here

正如你所看到的,它表示它被移动到yCoor = 5.5f,但它没有,因为当我为y手动键入5.5时,它不可见,它就在屏幕外。 任何帮助解决这个问题将不胜感激。

更新:如果我输入一个打印声明,如

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

在我的更新方法中,它读取y = 5,所以有些东西强迫它回到5,但是知道没有其他任何东西可以调用" Top"正在应用脚本的GameObject。

3 个答案:

答案 0 :(得分:2)

由于你要用int分隔,我认为transform.localScale.y / 2的结果可能是0而不是0.5(虽然我不能理解为什么你的印刷品会给出正确的价值)

答案 1 :(得分:0)

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

答案 2 :(得分:0)

所以,我发现必须禁用要更改位置的对象,设置位置然后再启用它。

Player.SetActive(false);
Player.transform.position = new Vector3(PositionX, PositionY, PositionZ);
Player.SetActive(true);

这可能是因为在游戏过程中,您尝试移动的玩家或对象处于静态模式。

Chirag Shah