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

2023-12-29

因此,我在其他平台上开发了 x/y 坐标系对我有意义的游戏。左上角代表游戏屏幕,坐标为(0,0),右下角代表(宽度,高度)。现在我正在尝试跳转到 Unity 2d,但我无法理解游戏屏幕是如何工作的。如果我在屏幕上有一个背景对象和一个角色对象,当我围绕他的 x 和 y 值移动角色时,他的 x 和 y 值在 -3 和 3 之间变化...非常小的坐标,并且它与我设置的游戏分辨率不匹配( 1024x768)。有没有好的教程可以帮助您理解 Unity 中的游戏网格?或者谁能​​解释我如何才能完成我想做的事情?


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

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

查看坐标:给定相机视口中的坐标。视口是一个想象的矩形,通过它观察世界。这些坐标是成比例的,范围从 (0,0) 到 (1,1)。

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

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

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

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

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

    transform.position = pos;

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Unity 2d 中使用坐标系和游戏屏幕? 的相关文章

  • 傅里叶变换定理 matlab

    我目前正在尝试理解二维傅里叶位移定理 根据我到目前为止所了解到的情况 图像空间中的平移会导致相位差异 但不会导致频率空间中的幅度差异 我试图用一个小例子来演示这一点 但它只适用于行的移位 而不适用于列的移位 这是一个小演示 我只在这里显示幅
  • Android UnityPlayerActivity 操作栏

    我正在构建一个 Android 应用程序 其中包含 Unity 3d 交互体验 我已将 Unity 项目导入 Android Studio 但启动时该 Activity 是全屏的 并且不显示 Android 操作栏 我怎样才能做到这一点 整
  • 如何挤出平面 2D 网格并赋予其深度

    我有一组共面 连接的三角形 即二维网格 现在我需要将其在 z 轴上挤出几个单位 网格由一组顶点定义 渲染器通过与三角形数组匹配来理解这些顶点 网格示例 顶点 0 0 0 10 0 0 10 10 0 0 10 0 所以这里我们有一个二维正方
  • SpriteKit 碰撞检测中 SKSpriteNode 之间的间隙

    我已经尝试解决这个问题很长一段时间了 我有一个具有简单平台物理原理的游戏 其中玩家跌倒在一个方块上 这可以阻止他跌倒 这是可行的 但是玩家停止的位置和实际对象 精灵节点的位置之间存在明显的差距 这是一个屏幕截图 它应该是不言自明的 clas
  • 在浏览器中以低延迟捕获声音输入

    是否可以在浏览器中捕获低延迟的声音输入 主要用于录制吉他 我知道这也取决于硬件 但我们假设硬件足够好 我尝试使用 Web Audio API 但它的延迟有点糟糕 是否还有其他技术可以在浏览器中提供高性能的声音输入捕获 可以使用Unity3D
  • 你好,我最近正在开发我的新游戏,我遇到了*无限跳跃*的问题

    所以基本上当我按跳跃 空格键时我会跳跃但是如果我连续按空格键它 只是跳啊跳啊跳等等 我不想要我只想它跳一次 code if Input GetKeyDown space isGrounded velocity y Mathf Sqrt ju
  • 简单模式7公式/例子?

    我最近发现了利用 SNES 模式 7 的伪 3D 效果 并想尝试在 Godot 引擎中复制它 我尝试在网上查找 但所有内容要么以我无法理解的方式解释 要么以我不知道的编程语言解释 我还需要学习如何旋转该区域 并将精灵作为角色或敌人放入 但我
  • 适用于图形应用程序的快速、像素精度 2D 绘图 API?

    我想创建一个跨平台的绘图程序 编写应用程序的一个要求是画布上具有像素级精度 例如 我想编写自己的画线算法 而不是依赖别人的 我不想要任何形式的抗锯齿 同样 需要像素级控制 我希望屏幕上的用户交互快速且响应灵敏 取决于我编写快速算法的能力 理
  • Unity3D如何连接NavMesh和NavMeshAgent

    我在编辑器中收到此错误 SetDestination can only be called on an active agent that has been placed on a NavMesh 这些是我在解决问题时尝试的步骤 将 Nav
  • 优化 - 步进可能表现奇怪:iOS/Unity

    我正在尝试将 Unity 集成到 iOS 应用程序中 我已经遵循了这个教程http www agnosticdev com blog entry swift integrating unity and vuforia ios swift p
  • 将旧的 Unity 代码升级到 Unity 5

    在触发按钮上播放动画的代码似乎不起作用 我在 Youtube 上看到了一个视频 内容很简单animation Play 它可以在该视频上运行 但我无法让它在我的计算机上运行 我做错了什么还是团结改变了它 请帮助我在网上找不到解决方案 所有
  • Unity 2019 - 如何修复 TextMeshPro 2.0 错误 cs0433

    我刚刚开始包含 Vuforia SDK 的新项目 进行一些更改后 我决定从 Asset Store 安装 GitHub 扩展以进行一些备份 之后我的 textMeshPro 插件变得疯狂 抛出了一个我无法处理的恼人错误 错误说 Librar
  • 检测哪些 Tilemap 单元与 Unity 中的 Collider2D 发生碰撞

    我有一个Tilemap 这有一个TilemapCollider2D成分 在其上绘制了几个图块 每个图块都有自己的精灵碰撞器形状 然而它们是精灵图块而不是预制件 它们不是使用预制画笔绘制的 我还有一个游戏对象Collider2D a Circ
  • X 轴和 Z 轴上的 Quaternion.Slerp,无 Y 轴

    I am trying to rotate the Player about X Y and Z axis The Y axis should not move from last angle Example if I rotate 45
  • 找到一个带有标签的非活动游戏对象?

    有没有办法找到带有标签的不活动游戏对象 有答案说不 这是不可能的 但那是在 2013 年 最近有什么变化可以做到这一点吗 public GameObject FindWithTag void Update FindWithTag GameO
  • 关于制作点击游戏的资源(无闪光)[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我玩过很多点击式冒险游戏 Broken Sword Sam Max Dott Indiana Jones 等 我想了解如何创建这样的游戏
  • 将函数作为函数参数传递

    Unity C 似乎无法识别Func lt gt 作为函数委托的符号 那么 如何将函数作为函数参数传递呢 我有一个想法Invoke functionName 0 可能有帮助 但我不确定它是否实际上立即调用该函数 或者等待帧结束 还有别的办法
  • Facebook Unity Sdk v5.0.3 尝试登录时在横向模式下崩溃 - Android

    当我在横向模式下单击登录按钮时 游戏崩溃 如果我使用纵向模式 一切都会正常工作 当我崩溃时 我从 bugsense 得到了以下堆栈跟踪 java lang RuntimeException Unable to start activity
  • 渲染和触摸输入之间的 libgdx 坐标系差异

    我有一个渲染 PNG 图像的屏幕 BaseScreen 实现了 Screen 接口 单击屏幕时 会将角色移动到触摸的位置 用于测试目的 public class DrawingSpriteScreen extends BaseScreen
  • 模块中的类无法加载

    我正在开发一个 2D Unity android 游戏 其中我最近添加了 Firebase Beta SDK 但添加后FirebaseAnalytics unitypackage我面临的错误是 无法加载模块中的类 当我删除文件夹时Fireb

随机推荐