我正在尝试创建一个简单的平台生成器,我想出了这个方法:
float space = Random.Range(0, distance); Instantiate(building, building.transform.GetChild(1).position + new Vector3(building.transform.position.x,0,0)+ new Vector3(space,0,0), Quaternion.identity);
但正如预期的那样,它只是根据第一个平台的位置实例化平台。我怎样才能每次都获得生成平台的位置,而不仅仅是第一个?
该Instantiate
函数返回它实例化的对象。您可以获取该对象并从中访问位置和旋转。
保存最后一个实例化对象的全局变量:
public GameObject obj;
实例化并返回对实例化对象的引用:
obj = Instantiate(building, building.transform.GetChild(1).position
+ new Vector3(building.transform.position.x, 0, 0) + new Vector3(space, 0, 0), Quaternion.identity);
访问实例化对象的位置和旋转:
Vector3 pos = obj.transform.position;
Quaternion rot = obj.transform.rotation;
如果您需要使用最后一个实例化对象的位置,那么只需检查它是否null
. 如果null
,使用预制的原始预制位置,因为还没有实例化的预制。如果不是,null
则使用最后一个实例化的对象位置。
if (obj == null)
{
//Use the original prefab position
obj = Instantiate(building, building.transform.GetChild(1).position
+ new Vector3(building.transform.position.x, 0, 0) + new Vector3(space, 0, 0), Quaternion.identity);
}
else
{
//Use last instantiated object position
obj = Instantiate(building, obj.transform.GetChild(1).position +
new Vector3(obj.transform.position.x, 0, 0) + new Vector3(space, 0, 0), Quaternion.identity);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句