【问题标题】:Unity 2017: 2D Screen OriginUnity 2017:2D 屏幕起源
【发布时间】:2017-11-29 08:25:26
【问题描述】:

我似乎找不到答案的超级基本问题:

我所做的只是创建一个新的 2D unity 项目并向场景中添加一个精灵。我将 C# 脚本添加到精灵并将其位置设置为新的 Vector2(0,0)。运行时,精灵将其中心点移动到屏幕的中心,而不是左下角。当我在编辑器中将恶意的位置设置为 0,0 时也是如此。我试过让精灵成为相机的孩子,我试过使用 WorldToScreenPoint()。自从我使用 Unity 以来已经有一段时间了,所以我一定无法理解某些东西。

感谢您的帮助

编辑: 正如这里所建议的,这是有问题的单行代码,不要认为这会增加很多清晰度。

public class NewBehaviourScript : MonoBehaviour {

// Use this for initialization
void Start () {
    this.transform.position = new Vector2 (0, 0);
}

// Update is called once per frame
void Update () {

}

}

【问题讨论】:

  • 没有你的代码,怎么会有人发现你的问题?
  • 通过您的编辑,您还没有提出任何问题。你在期待什么?
  • 如果我理解正确,您只需移动相机,使相机的中心不在世界中心(原点)。

标签: c# unity3d


【解决方案1】:

Unity 渲染基于相机的视锥体,而不是任意的屏幕像素位置(除非您通过脚本将此类转换为视锥体)。

默认情况下,相机将“查看”场景空间原点 (0, 0),如果您将精灵放在那里,它当然会在播放时以屏幕为中心。


[编辑]

顺便说一句,来自...

我已经尝试让精灵成为相机的孩子,并且我已经尝试过 使用 WorldToScreenPoint()。

...您似乎正试图将精灵放置在与相机相关的某个位置。如果那是用于 GUI,那么正确的方法是 不 作为相机的子级。 改为使用屏幕空间Canvas。与相机不同,屏幕空间画布也基于像素位置工作! =)

【讨论】:

    猜你喜欢
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多