在工作2D中团结的游戏,我有困难,试图催生一个块正好在我的游戏平台之上。我不希望块看起来像是漂浮在平台上或与平台重叠。
我似乎无法正确计算。
我目前有这个代码:
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);
}
Run Code Online (Sandbox Code Playgroud)
问题在于它以与平台重叠的方式生成块,这意味着我对块的 y 位置的计算是错误的。
我仍然习惯于使用 Unity 的世界坐标系,所以是的。有谁知道如何解决这个问题?
该Vector3传递给Instantiate将成为游戏对象实例化的中心,但它看起来像你计算,其中它的底部应该是。尝试将块高度的一半添加到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);
Run Code Online (Sandbox Code Playgroud)