如何在Unity中正确移动游戏对象?

时间:2017-05-04 05:38:46

标签: c# unity3d unity5

我想移动一个Text对象,代码部分如下。

GameObject.transform.position = new Vector3(-210, -200, 0);

当我在Unity中执行并检查GameObject的posX时,其值变为-1170(在1920x1080中), - 1653.566(16:9)。但是posY可以正常工作。我已经将参考卷积设置为1920x1080,我认为它可能与分辨率设置有关。有什么不对的吗?感谢。

2 个答案:

答案 0 :(得分:3)

如果你在谈论统一的ui文本,你应该这样做。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class UITestSO : MonoBehaviour 
{

    public Text textObject;
    void Start () 
    {

        //Position relative to parent transform
        textObject.rectTransform.localPosition = new Vector3 (-210, -200, 0);

        //Position in world space
        textObject.rectTransform.position = new Vector3 (-210, -200, 0);
    }
}

答案 1 :(得分:0)

在Unity中,您在检查器中看到的变换值是相对于gameobject的父级的。但是,当您尝试为游戏对象的位置设置值时(通过指定transform.position = ...),您将处理相对于世界中心的位置(即Vector(0,0,0))。这适用于您是处理3d还是2d。

因此,如果父对象位于Vector(0,0,0),则世界和本地位置将相同。决议没有任何问题。您需要设置相对于父级的值。

这是您为对象设置值的方法。

    anObject.transform.localPosition = new Vector3 (X, Y, Z);

虽然没有什么可以阻止您在2D工作流程中使用相同的工作流程,但{4}用于简单的转换。