在Unity 2d中使用坐标系和游戏屏幕吗?

埃里克·史密斯

因此,我已经在其他平台上开发了游戏,这些平台对我来说x / y坐标系很有意义。左上角代表(0,0)坐标的游戏屏幕,右下角是(width,height)。现在,我试图跳到Unity 2d,但我不明白游戏屏幕的工作原理。如果我在屏幕上有一个背景对象和一个角色对象,则当我将角色移动到他的x和y值时,其值在-3和3之间变化...非常小的坐标,并且与我设置的游戏分辨率不符( 1024x768)。有没有很好的教程来了解Unity中的游戏网格?还是有人可以解释我如何完成我想做的事情?

超音速

Unity中有三个坐标系:屏幕坐标,视图坐标和世界坐标。

世界坐标:使用“点”考虑场景中对象的绝对位置。您可以选择使单位代表您想要的任何长度,例如1个单位= 10米。屏幕上实际显示的内容取决于相机的放置位置和方向。

查看坐标:给定摄像机视口中的坐标。视口是虚构的矩形,通过该矩形可以查看世界。这些坐标是比例的,范围从(0,0)到(1,1)。

屏幕坐标:表示设备屏幕上位置的实际像素坐标。

请注意,无论使用哪个摄像机进行查看,任何给定对象的世界坐标都将始终相同,而查看坐标取决于所使用的摄像机。屏幕坐标还取决于设备的分辨率和摄像机视图在屏幕上的位置。

“相机”对象提供了几种在这些不同坐标系之间进行转换的方法,例如“ ScreenToViewportPoint”,“ ScreenToWorldPoint”等。

示例:将对象放在屏幕的左上方

    float distanceFromCamera = 10.0f;
    Vector3 pos = Camera.main.ScreenToWorldPoint (new Vector3 (0, Screen.height, distanceFromCamera));

    transform.position = pos;

ScreenToWorldPoint函数以Vector3作为参数,其中x和y表示屏幕上的像素位置(0,0是左下角),而z分量表示距摄像机的期望距离。无限数量的3D位置可以映射到同一屏幕位置,因此您需要提供此值。

只要确保所需位置在相机的剪切区域内即可。另外,您可能需要为对象选择合适的枢轴,具体取决于您希望对象的哪一部分位于左上方。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Unity3d-在2D滚动游戏中使用全景背景吗?

来自分类Dev

使用 UNITY 游戏引擎开发 Android 2D 游戏

来自分类Dev

使用带有 Unity 的 Google Tango 获取 OpenGL 坐标系的姿势数据

来自分类Dev

如何在Unity 3D中相对于旋转坐标系计算四元数?

来自分类Dev

在2D坐标系中查找分开的线

来自分类Dev

2D Unity游戏中的3D类

来自分类Dev

2D Unity游戏中的3D类

来自分类Dev

与Unity 3d相比,Unity 2d使用的系统资源是否少吗?

来自分类Dev

与Unity 3d相比,Unity 2d使用的系统资源是否少吗?

来自分类Dev

Unity2D-如何在2D游戏中围绕圆形移动和旋转游戏对象?

来自分类Dev

我可以在Unity3d中使用多个游戏手柄吗?

来自分类Dev

Unity 2D游戏射击目标问题

来自分类Dev

Unity 2D游戏中的OnSerializeNetworkView issus

来自分类Dev

Unity 2d游戏中的奇怪碰撞错误

来自分类Dev

使Bike在Unity 2D游戏中稳定

来自分类Dev

Unity 2d游戏画面搞砸了bug

来自分类Dev

Unity 2D:销毁 + 实例化新游戏对象 vs 更改状态和精灵

来自分类Dev

我正在使用Unity还是Unity 2D?

来自分类Dev

我正在使用Unity还是Unity 2D?

来自分类Dev

如何使用unity3d在2D游戏中绘制单色背景?

来自分类Dev

使用Unity3D进行2D游戏开发

来自分类Dev

使用C#在Unity中创建2D游戏板/网格

来自分类Dev

在Unity中使用RigidBody2D

来自分类Dev

在Unity中使用DbContextScopeFactory

来自分类Dev

Unity加载初始屏幕完成后,Unity游戏崩溃

来自分类Dev

变换 Unity 坐标

来自分类Dev

Unity即时游戏模拟

来自分类Dev

Unity游戏加载缓慢

来自分类Dev

Unity坦克多人游戏