与德尔福相比,Unity是如此困难。在delphi中你可以说:
Rectangle1.Position.Y := 0;
Rectangle1.Position.X := screen.Width - Rectangle1.Width;
这只会将矩形的位置更改为屏幕的右上角。但在Unity中,要做到这一点还有很多东西需要学习,我不知道从哪里开始。有人可以向我简化这个吗?我只想在屏幕的右上角创建一个对象,包括智能手机和个人电脑。
我正在使用Unity2D
这是我用来在屏幕上创建对象的代码:
Instantiate(objectName, new Vector3(0, 0, 0), Quaternion.identity);
答案 0 :(得分:4)
摄像机的屏幕坐标与世界坐标不同(一个有2个维度,另一个有3个。一个使用像素和其他Unity单位)。
我会使用Camera.ScreenToWorldPoint。
对文档进行评论:
Camera.ScreenToWorldPoint(position:Vector3)将屏幕空间的位置转换为世界空间。
屏幕空间以像素为单位定义。屏幕的左下角是(0,0);右上角是(pixelWidth,pixelHeight)。 z位置是相机的世界单位。
所以将你的Rectangle以与你描述的方式类似的方式放在角落里(使用伪代码C#mix):
Vector3 p = camera.ScreenToWorldPoint(new Vector3(0, Screen.height, HowFarFromCamera));
Rectangle1.position = new Vector3(p.x + Rectangle1.Width/2,p.y - Rectangle1.Height/2,p.z);
点 p 是世界坐标的角落(这是重要的事情)。假设您的矩形枢轴位于中间,我按宽度/ 2和高度/ 2移动。
注意:您可以使用Bounds.size来获取宽度或高度(Renderer和SpriteRenderer都可用的结构)
答案 1 :(得分:1)