使对象在不同的​​屏幕宽度大小统一内正确生成

时间:2018-01-30 11:32:51

标签: screen unity5 spawning

我在Unity制作了我的第一个游戏。它应该发布到Android和iOS。当我将屏幕比例改为9:18(三星S8,Lg G6 ......)小行星被切断时,一切都工作正常,因为产卵点固定在-2.4f到2.4f之间。我尝试了各种各样的东西,但没有任何效果......我已被告知使用screen.width然后制作一些逻辑,但我不知道如何制作逻辑,以便它实际工作。 enter image description here

这是我在场景中产生小行星的代码:Instantiate(asteroid1prefab, new Vector3(Random.Range(-2.4f, 2.4f), 6, 0), Quaternion.identity);

任何形式的帮助将不胜感激

1 个答案:

答案 0 :(得分:2)

您需要使用基于屏幕尺寸的范围替换您的产卵系列。 为此,您可以将视口坐标投影到世界坐标

引用文档:

  

视口空间点是相对于相机标准化的。该   相机的左下角是(0,0);右上角是(1,1)。 z   位置是相机的世界单位。

使用带有输入(0,0)和(1,1)的Camera.ViewportToWorldPoint来获取屏幕右上角和左下角的世界坐标。这些将允许您设置产生对象的适当范围

修改

这应该给你一些看起来像

的东西
Vector3 bottomLeftWorld = camera.ViewportToWorldPoint(new Vector3(0, 0, camera.nearClipPlane));
Vector3 topRightWorld = camera.ViewportToWorldPoint(new Vector3(1, 1, camera.nearClipPlane));

Instantiate(asteroid1prefab, new Vector3(Random.Range(bottomLeftWorld.x, topRightWorld.x), topRightWorld.y, 0), Quaternion.identity);