如何正确地移动游戏对象



我想移动一个文本对象,而代码的一部分如下。

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

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

如果您在谈论Unity 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);
    }
}

所有UI对象(文本,图像等(均由Canvas Object unity归属。帆布根据其屏幕空间设置的行为不同 -

  1. 屏幕空间 - 覆盖:如果调整了屏幕或更改分辨率,则画布将自动更改大小以匹配此尺寸。

  2. 屏幕空间 - 相机:如果调整了屏幕,更改分辨率或相机胶合动物更改,则画布将自动更改大小以匹配。

  3. 屏幕空间 - 世界:画布将以场景中的任何其他对象行为。可以使用其RECT变换手动设置画布的大小。

默认设置为屏幕空间 - 覆盖这是您在不同分辨率上获得文本对象的不同位置值的原因。

UNITY UI元素使用RectTransform。来自Unity Docs

RECT变换组件是2D布局 变换组件。其中转换代表一个点,rect 变换表示可以放置UI元素的矩形 里面。如果矩形转换的母体也是一个一个一个转换,则 儿童矩形变换还可以指定应如何定位 相对于父矩形大小。

so,要设置UI元素的位置,请使用RectTransformanchoredPosition变量,该变量将其相对于锚点参考点设置此矩形的枢轴的位置。

textObject.rectTransform.anchoredPosition = new Vector3 (-10, -10, 0);

引用rect transform脚本api。

在Unity中,您在检查器中看到的转换值相对于GameObject的父。但是,当您尝试为游戏对象的位置设置值(通过分配transform.position = ...(时,您正在处理相对于世界中心(即矢量(0,0,0((的位置。这对于您是否要处理3D还是2d。

是正确的。

因此,如果父对象在向量(0,0,0(,则世界和本地位置将相同。该分辨率没有任何问题。您需要相对于父母设置值。

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

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

尽管没有什么可以阻止您在2D工作流程中使用相同的功能,但在简单的变换上使用了recttransforms。

最新更新