Unity Cube gameobject变换位置不变

Poo*_*kie 2 c# scripting unity-game-engine

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

在此处输入图片说明

在图像的右侧,您可以看到一个名为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);
}
Run Code Online (Sandbox Code Playgroud)

当我这样做时,什么也没有发生。我似乎做不到,对此非常有帮助。

Pro*_*mer 5

Transform.position返回a的副本Vector3而不是引用。因此,修改副本不会影响原始Vector3位置。

Replace bottomWall.transform.position.Set(1000, 100, 1000);
Run Code Online (Sandbox Code Playgroud)

bottomWall.transform.position = new Vector3(100, 100, 100);
Run Code Online (Sandbox Code Playgroud)

与您的问题无关

由于BottomWalls的子级,因此最好Walls/Button在您的Find函数中使用,因为这将告诉Unity 仅在Walls层次结构下查找Bottom GameObject 。当场景中有太多GameObject时,这是快速的。

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