微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Unity C#:如何在屏幕位置创建GameObject?

与delphi相比,Unity非常困难.在delphi中你可以说:

Rectangle1.Position.Y := 0;
Rectangle1.Position.X := screen.Width - Rectangle1.Width;

这只会将矩形的位置更改为屏幕的右上角.但在Unity中,要做到这一点还有很多东西需要学习,我不知道从哪里开始.有人可以向我简化这个吗?我只想在屏幕的右上角创建一个对象,包括智能手机和个人电脑.

我正在使用Unity2D

编辑:这是我要创建的对象的Inspector:

enter image description here


这是我用来在屏幕上创建对象的代码

实例化(objectName,new Vector3(0,0,0),Quaternion.identity);

编辑更清楚:

enter image description here

解决方法:

摄像机的屏幕坐标与世界坐标不同(一个具有2个维度,另一个具有3.一个使用像素和其他Unity单位).

我会用Camera.ScreenToWorldPoint.

对文档进行评论

Camera.ScreenToWorldPoint(position: Vector3) Transforms position from screen space into world space.

Screenspace is defined in pixels. The bottom-left of the screen is (0,0); the right-top is (pixelWidth,pixelHeight). The z position is in world units from the camera.

因此,以与您描述的方式类似的方式将您的矩形放在角落(使用伪代码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都可用的结构)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐