我想改变底壁的位置。底壁是用于碰撞的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);
}
当我这样做时没有任何事情发生。我似乎无法做到这一点,对此的任何帮助都非常感激。
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");
它是另一个游戏对象的孩子吗?可以试试gameObject.transform.localPosition