unity3d - 如何正确地在另一个对象的顶部正确生成游戏对象?

标签 unity3d

处理 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/

相关文章:

c# - 蛇游戏尾部

android - Unity 2018.3 android dex合并问题

ios - 寻找具有板载 RTK 且易于与 iOS 应用程序连接的 GPS 设备

unity3d - 为什么我的 3D 对象没有显示在我的 Unity Canvas 中?

c# - Unity3d,C#传递函数作为参数

c# - OmniSharp 自动完成类名,而不仅仅是方法/属性?

android - 有没有人使用 OpenCV 实现了一个用于统一的 android 插件?

c# - 如何计算冷却时间和持续时间

c# - 获取错误 : Cannot implicitly convert type `UnityEngine.Touch' to `bool'

unity3d - 无法发布我的 Android Unity 应用程序 : APK in debug mode