3

我在 Unity 中制作了我的第一款游戏。它应该发布到 Android 和 iOS。一切正常,除了当我将屏幕比例更改为 9:18 时小行星被切断(三星 S8,LG G6 ......)小行星被切断,因为生成点固定为 -2.4f 到 2.4f。我尝试了各种方法,但没有任何效果......我已经被告知使用 screen.width 然后制作一些逻辑,但我不知道如何制作逻辑以使其真正起作用。 在此处输入图像描述

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

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

4

1 回答 1

4

您需要将生成范围替换为基于屏幕大小的范围。为此,您可以将视口坐标投影到世界坐标

引用文档:

视口空间点是标准化的并且相对于相机。相机的左下角是(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);
于 2018-01-30T12:28:20.480 回答