Мне нужно использовать функцию "GUI.DrawTexture(new Rect..."), чтобы нарисовать прямоугольник на моем экране (на самом деле это градиентная полоса графического интерфейса, которую я получил от https://www.assetstore.unity3d.com/en/#!/content/19972, но внутри это просто прямоугольник) Я хочу сделать это рядом с игровым объектом, который у меня есть на экране.
Проблема в том, что координаты прямоугольника не совпадают с координатами игровых объектов (я искал в Интернете и думаю, что это правда). Я попробовал функцию ниже, чтобы преобразовать позицию игрового объекта в координаты прямоугольника, но все равно не повезло:
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 не находится точно в позиции gameObject. Это x правильно, а y нет, и когда я искал в Интернете, они сказали, что мне нужно было только сделать «Screen.height - gameObjectsPosition.y» при рисовании Rect. Это не сработало для меня, y все еще неправильно.
Что я должен сделать, чтобы создать прямоугольник, который находится прямо рядом с текущим игровым объектом на экране (например, если позиция игрового объекта x = -401 и y = -80, я хочу, чтобы он был на y = -80 и x = -300)