Die*_*urt 5 c# screen unity-game-engine
与delphi相比,Unity非常困难.在delphi中你可以说:
Rectangle1.Position.Y := 0;
Rectangle1.Position.X := screen.Width - Rectangle1.Width;
Run Code Online (Sandbox Code Playgroud)
这只会将矩形的位置更改为屏幕的右上角.但在Unity中,要做到这一点还有很多东西需要学习,我不知道从哪里开始.有人可以向我简化这个吗?我只想在屏幕的右上角创建一个对象,包括智能手机和个人电脑.
我正在使用Unity2D
这是我用来在屏幕上创建对象的代码:
Instantiate(objectName, new Vector3(0, 0, 0), Quaternion.identity);
小智 6
相机的屏幕坐标与世界坐标不同(一个有 2 个维度,另一个有 3 个。一个使用像素和其他 Unity 单位)。
我会使用Camera.ScreenToWorldPoint。
引用文档:
Camera.ScreenToWorldPoint(position: Vector3) 将位置从屏幕空间转换为世界空间。
屏幕空间以像素为单位定义。屏幕左下角是(0,0);右上角是 (pixelWidth,pixelHeight)。z 位置以相机的世界单位为单位。
因此,以类似于您所描述的方式(使用伪代码 C# 混合)将您的 Rectangle 放在角落:
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);
Run Code Online (Sandbox Code Playgroud)
点p是世界坐标中的角点(这很重要)。假设矩形的枢轴在中间,我移动了 Width/2 和 Height/2。
注意:您可以使用Bounds.size来获取宽度或高度(一个可用于 Renderer 和 SpriteRenderer 的结构)
| 归档时间: |
|
| 查看次数: |
1163 次 |
| 最近记录: |