Unity Cube gameobject转换位置不变

问题描述 投票:2回答:2

我想改变底壁的位置。底壁是用于碰撞的3D立方体。这是立方体和属性的图片。

enter image description here

在图像的右侧,您可以看到名为transform的属性栏。我想通过脚本访问它并更改位置。这是我试图用它做的代码。

    void Start () {


    GameObject bottomWall = GameObject.Find("Bottom");
    Bottom bottomScript = bottomWall.GetComponent<Bottom>();
    bottomScript.wallPos.y = -Camera.main.orthographicSize * 1000;
    bottomWall.transform.position.Set(1000, 100, 1000);
    bottomWall.GetComponent<Transform>().position.Set(100, 100, 100);
}

当我这样做时没有任何事情发生。我似乎无法做到这一点,对此的任何帮助都非常感激。

c# unity3d scripting
2个回答
4
投票

Transform.position返回Vector3的副本而不是引用。所以修改副本不会影响原来的Vector3位置。

Replace bottomWall.transform.position.Set(1000, 100, 1000);

bottomWall.transform.position = new Vector3(100, 100, 100);

与您的问题无关:

由于Bottom是Walls的孩子,所以最好在你的Walls/Button函数中使用Find,因为这会告诉Unity只在Walls层次结构下寻找Bottom GameObject。当场景中有太多GameObjects时,这很快。

所以使用GameObject bottomWall = GameObject.Find("Walls/Bottom");


1
投票

它是另一个游戏对象的孩子吗?可以试试gameObject.transform.localPosition

© www.soinside.com 2019 - 2024. All rights reserved.