为什么gameObject在Unity中获得这样的位置?

时间:2018-07-05 14:10:41

标签: c# unity3d position

我想创建2D游戏。 对象的结构

enter image description here     []

“查看”显示了发生一切的正方形。

“初始”是与蒙版相同的正方形

“ SquareList”是空白面板。

我为什么要这样做?

我创建了一个脚本,当我在屏幕上单击时,会将一个新的正方形添加到SquareList中。 SquareList是父级。我创建了一个脚本来确定光标的位置。

createPos = new Vector2 (Input.mousePosition.x, Input.mousePosition.y);

接下来,我要设置新的对象位置=光标位置。

等效于游标位置=(562,1134 / 242.6486) 但是新对象获得位置(94931.29 / 103365.6 / -17280)

但是如果我将新对象的位置设置为= new Vector(0,0); 那一切都很好

出什么问题了?

2 个答案:

答案 0 :(得分:2)

Input.mousePosition返回像素坐标中的位置。您必须使用Camera.main.ScreenToWorldPoint将其转换为世界位置,然后将其分配给对象。如果是3D对象,请在使用ScreenToWorldPoint进行转换之前为其添加偏移量。

public GameObject prefab;
public float offset = 10f;

void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        Vector3 clickPos;

        clickPos = Input.mousePosition;
        clickPos.z = offset;

        clickPos = Camera.main.ScreenToWorldPoint(clickPos);
        GameObject obj = Instantiate(prefab, clickPos, Quaternion.identity);
    }
}

答案 1 :(得分:0)

你好,无名的兄弟姐妹!我相信您会看到此问题,因为游戏对象的坐标受其父对象的坐标影响。您可能需要使用 localPosition 查找更多相对坐标。

更多信息:https://docs.unity3d.com/ScriptReference/Transform-localPosition.html