【发布时间】:2018-08-23 11:10:23
【问题描述】:
我最近才开始使用 Unity,并将我的预制代码转换为它。现在我试图让一个对象出现在一个特定的坐标,在 2D 中。
我会尽力解释。游戏有主界面窗口,带有某种框架。游戏室需要出现在框架内。因此,在 Unity 主窗口中,我手动放置了一个这样的房间,以记下游戏房间的坐标。现在,我想编写一个脚本,将对象放置在这些坐标中。
例如,假设这些坐标是:(30,40)。
为了确保我说清楚:30 和 40 是大区域左上角和内部小区域左上角之间的距离。
我尝试在网上查找有关如何使用这些坐标的信息,并找到了有关 Vectors 的信息。
这就是我想要做的:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class AreaContainerScript : MonoBehaviour
{
static List<GameObject> SmallAreas = new List<GameObject>();
static Vector2 SmallVector = new Vector2(20, 280);
void DefineSmallAreas()
{
SmallAreas.Add(GameObject.Find("areaConfirmLoad"));
SmallAreas.Add(GameObject.Find("areaConfirmQuit"));
//...
}
void StartAllAreas()
{
DefineSmallAreas();
foreach (GameObject thisObject in SmallAreas)
{
thisObject.transform.position = SmallVector;
thisObject.SetActive(false);
}
}
仅当我将 Vector 属性设置在 -1 和 1 之间时,我才能直观地看到相关图像(在错误的位置)。
经过一番尝试,我了解到,向量 x 和 y 值应该采用不同的格式,它们应该是小数,始终在 -1 和 1 之间。
如何将精确坐标转换为这个小数?或者也许我应该使用不同的方法?
提前谢谢你,
叶甫盖尼
【问题讨论】:
-
如果我理解正确,您无法在屏幕上正确定位该对象?您可以将世界位置转换为屏幕位置,反之亦然。 docs.unity3d.com/ScriptReference/Camera.WorldToScreenPoint.html
标签: c# unity3d vector graphics coordinates