【问题标题】:Placing random game objects on canvas in random position with specific distance将随机游戏对象放置在画布上具有特定距离的随机位置
【发布时间】:2018-12-11 06:22:45
【问题描述】:

我是 Unity 新手,正在尝试创建一个自上而下的游戏。

我的主相机投影设置为正交。

我添加了一个渲染模式为“屏幕空间 - 相机”和 UI 缩放模式为“随屏幕大小缩放”的画布,以容纳我的操纵杆和其他 UI 元素以支持不同的分辨率。此外,我添加了另一个具有相同设置的画布来固定墙壁和门(因为它们应该在屏幕的边界或边缘以及不同的分辨率!)。我需要在屏幕上放置一些对象,我可以通过特定距离随机或通过在屏幕上(画布内)创建空游戏对象并将它们绑定到脚本然后将我的预制件放置到它们的(空GameObject)位置.

问题是我无法理解 Canvas 和 Screen 中的对象位置,我将我的预制件实例化到 Canvas 上的空游戏对象位置,但它被放置在其他地方。

这是我的场景的 3d 视图:

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    您可以使用 Camera.main.screenToWorldPoint 并为 x 和 z 坐标使用随机浮点数或整数。如果您将随机数设置在世界空间的右下角和世界空间的左上角之间,您将获得墙内的随机位置。

    【讨论】:

    • 我试过了但是不行!!这是我的代码:Camera.main.screenToWorldPoint(EmptyGameObjectOnCanvas.transform.position),但我的预制件现在被放置在屏幕之外。
    • 不要使用单独的画布来调整墙壁,而是尝试使用 screenToWorldPoint 移动墙壁,然后使用墙壁的位置来创建随机位置。
    • 感谢您的耐心等待,其实我目前是根据门的位置生成随机位置的,和你说的一样,问题是如果我不把门和墙放在画布上,如何在不同的分辨率下调整它们?我希望它们始终位于屏幕的边缘和角落。
    • 我不确定这是否会更好,但您可以尝试在右下角的画布中放置一个空的游戏对象,然后调整墙壁以与世界对齐空间。也许这会帮助您获得随机对象的位置。
    猜你喜欢
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-04
    • 1970-01-01
    相关资源
    最近更新 更多