关于世界空间中精灵大小的混淆(统一)


11

我有一个分辨率为1080x1920的Sprite。而且我还将“游戏视图分辨率”也设为1080x1920。我当时想的是,精灵(1080x1920)应该正确地放置在“相机视图”中。

图像分辨率为1080x1920

但是,当我拖动该精灵时,该精灵会放大并退出相机视图。

屏幕视图,精灵不在相机内

我需要进行哪些调整才能确保此精灵100%适合相机视图。我本可以更改Sprite Transform Scale。但这会引起问题,因为我还有很多其他的精灵要处理,它们应该成比例。


您是在谈论3D精灵吗?还是UI 2D精灵?
TomTsagk '18年

2D Sprite .....
Faizan Khan '18

Answers:


19

当您回想起精灵不仅在屏幕上逐像素地变色时,这是有道理的(这将使在不同分辨率的屏幕上获得相同外观的噩梦,因为它们都会以不同的方式裁剪您的艺术品) ,但是它们是您可以控制的与设备无关的游戏坐标系中3D世界的一部分。

就像该游戏世界中的其他所有内容一样,最终映射到屏幕的部分由您配置Camera对象的方式决定。

因此,有四个部分决定显示精灵的大小:

  1. 子画面的源分辨率

  2. 每个单位像素设置选择在其导入设置检查。

    这设置了一个转换因子,用于将大小从纹理空间中的像素转换为世界空间(即您进行所有游戏和物理计算的空间)中的单位

    以世界单位为单位的高度=以像素为单位的源高度/每单位像素

    通常,您应该选择此数字以与游戏中的一些相关游戏玩法指标保持一致。例如。如果您有一个间距为135像素的平铺网格,则选择“每像素像素数= 135”将使网格的每个像元在游戏的坐标系中恰好为1个单位宽,从而使计算更加方便。

  3. 相机的正交尺寸

    (或者,如果使用透视相机,则将相机的视场与从相机到子画面的深度结合起来使用)

    这确定了相机从其视图中心到顶部边缘可以看到的世界单位数。

    占用的相机高度部分=以世界单位为单位的高度/(2 *相机垂直大小)

    因此,如果我们以135 PPU值运行,则世界上1920像素高的精灵将达到14.222222单位高,这意味着我们需要一台高度为7.111111的相机来捕获整个物体的顶部(因为相机的高度是从中间)

  4. 窗口像素大小/输出屏幕的分辨率。

    默认情况下,相机的视图将垂直填充屏幕,因此,如果屏幕/窗口的高度发生变化,场景的垂直裁剪将不会更改(屏幕顶部或底部边缘的对象不会移动或裁剪出来,整个场景就会变大或变小以填充可用高度)。

    因此,您的相机可以从顶部到底部看到的世界单位数与从顶部到底部在窗口/屏幕中的像素数相对应。

    输出像素大小=占用的相机高度部分*像素窗口的高度

    因此,如果我们的屏幕高1920像素,而我们的源精灵恰好填充了相机的视图,那么它将以1:1对齐的方式在整个1920屏幕像素中输出。


非常感谢您的详细回答!!!!
赞汗

3
很高兴您发现它有用!我还写了一些其他有关在Unity中使用精灵大小的问答,这可能也有帮助:选择精灵大小匹配不同大小的精灵的外观缩放像素画
DMGregory

1
谢谢....我也跟着你的Twitter ...我感觉真的很好用了育碧:)一些人工作互动
Faizan汗
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.