【发布时间】:2016-07-22 17:29:51
【问题描述】:
我必须使用 "GUI.DrawTexture(new Rect..." 函数在我的屏幕上绘制一个矩形(实际上,它是我从https://www.assetstore.unity3d.com/en/#!/content/19972 得到的一个渐变 GUI 栏,但它的深处只是一个矩形) . 我想在我屏幕上的游戏对象旁边做。
问题是:矩形的坐标似乎与游戏对象的坐标不同(我在网上搜索过,我猜是真的)。我尝试了以下函数将游戏对象的位置转换为矩形的坐标,但仍然没有运气:
public Vector2 WorldToGuiPoint(Vector2 position)
{
var guiPosition = Camera.main.WorldToScreenPoint(position);
guiPosition.y = Screen.currentResolution.height - guiPosition.y;
return guiPosition;
}
我最好的一击是我这样做的时候:
Vector3 gameObjectsPosition = Camera.main.WorldToScreenPoint(gameObject);
然后当我想绘制矩形时:
GUI.DrawTexture(new Rect(gameObjectsPosition.x, Screen.height - gameObjectsPosition.y, Background.width * ScaleSize, Background.height * ScaleSize), Background);
但是,Rect 仍然不在游戏对象的确切位置上。 x 是对的,但 y 不是,当我搜索互联网时,他们说我只需要在绘制 Rect 时执行“Screen.height - gameObjectsPosition.y”。它对我不起作用,y 仍然是错误的。
我应该怎么做才能在屏幕上当前游戏对象旁边创建一个矩形(例如,如果游戏对象的位置是 x = -401 和 y = -80,我希望它在 y=-80 和 x= -300)
【问题讨论】:
标签: unity3d unity5 rect gameobject