我想创建2D游戏。 对象的结构
“查看”显示了发生一切的正方形。
“初始”是与蒙版相同的正方形
“ 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); 那一切都很好
出什么问题了?
答案 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