处理 2D
Unity 中的游戏,我在尝试在我的游戏平台上准确生成块时遇到了困难。我不希望块看起来像是漂浮在平台上或与平台重叠。
我似乎无法正确计算。
我目前有这个代码:
public GameObject blockPrefab;
public GameObject platform;
public GameObject dummyBlock;
// Use this for initialization
void Start ()
{
float platformSize = platform.GetComponent<Renderer>().bounds.size.y;
float blockSize = dummyBlock.GetComponent<Renderer>().bounds.size.y;
Debug.Log(platformSize.ToString());
GameObject test = (GameObject)Instantiate(blockPrefab,
new Vector3(platform.transform.position.x, platform.transform.position.y + platformSize/2, platform.transform.position.z),
Quaternion.identity);
}
问题在于它以与平台重叠的方式生成块,这意味着我对块的 y 位置的计算是错误的。
我仍然习惯于使用 Unity 的世界坐标系,所以是的。有谁知道如何解决这个问题?
最佳答案
Vector3
您转至 Instantiate
将是实例化的 GameObject 的中心,但看起来您正在计算它的底部应该在哪里。尝试将块高度的一半添加到 y
也协调:
float platformTop = platform.transform.position.y + platformSize/2;
Vector3 blockCentre = new Vector3(platform.transform.position.x, platformTop + blockSize/2, platform.transform.position.z);
GameObject test = (GameObject)Instantiate(blockPrefab, blockCentre, Quaternion.identity);
关于unity3d - 如何正确地在另一个对象的顶部正确生成游戏对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30209053/