gpt4 book ai didi

screen - 使对象在不同的​​屏幕宽度尺寸统一内正确生成

转载 作者:行者123 更新时间:2023-12-04 01:59:13 25 4
gpt4 key购买 nike

我在 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);
任何形式的帮助将不胜感激谢谢

最佳答案

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

引用文档:

A viewport space point is normalized and relative to the Camera. The bottom-left of the Camera is (0,0); the top-right is (1,1). The z position is in world units from the Camera.



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

编辑:

这应该给你一些看起来像
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);

关于screen - 使对象在不同的​​屏幕宽度尺寸统一内正确生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48520397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com