我有一个游戏对象ABC,我将在它的确切位置生成另一个游戏对象(占位符)作为它的子对象。
public new GameObject gameObject;
public GameObject placeholder;
void Start()
{
Instantiate(placeholder, new Vector3(0, 0, 0), Quaternion.Euler(0, 0, 0), gameObject.transform);
}
代码应该在ABC位置的(0,0,0)处生成占位符,没有旋转,对吗?
但相反,我得到了完全相反的结果,ABC是-30,-15,0,而占位符位置是30,15,0。
我做错了什么吗?请好心建议,提前感谢。
有没有可能我的代码出错了?
2条答案
按热度按时间xdnvmnnf1#
你传递给示例化的位置是一个世界位置,所以他们把你的对象放在www.example.com上v3.zero,你在示例化后看到的位置是相对于parent的值。
只使用父位置而不是零进行示例化,这将是相对于父位置的零
jjhzyzn02#
代码应该在ABC位置的(0,0,0)处生成占位符,没有旋转,对吗?
这是错误的,根据document。
如果指定了位置和旋转,则它们将用作对象在世界空间中的位置和旋转。
因此占位符将在世界位置(0,0,0)处生成,不幸的是没有好的方法来实现这一点,您可以首先生成占位符,然后更改它的父代。
另一种方法是使用父对象的世界位置和旋转。