Привет всем, у меня есть текст в моем пользовательском интерфейсе, и я не хочу, чтобы он следовал за движениями камеры игрока, но я хочу, чтобы он оставался в том месте, где я его создал.
Текст представляет собой небольшую желтую фразу, которую вы видите под кнопками пользовательского интерфейса «перемещение» слева. Когда я перемещаю своего персонажа, он следует за камерой. Я хочу, чтобы он оставался там, где он есть.
Это код, который я использую для его создания:
void SpawnPopupText()
{
TextMeshProUGUI popupInstantiated = Instantiate(startLevelMessage, pointWhereToSpawnMessage.transform.position, pointWhereToSpawnMessage.transform.rotation);
popupInstantiated.transform.SetParent(canvas.transform, false);
Vector2 screenPosition = Camera.main.WorldToScreenPoint(pointWhereToSpawnMessage.transform.position);
popupInstantiated.enableWordWrapping = false;
popupInstantiated.text = messageToStartLevel;
popupInstantiated.color = colorOfTextPopup;
popupInstantiated.transform.localScale = dimensionsOfPopup;
popupInstantiated.transform.position = screenPosition;
}
Есть ли способ сделать это чистым? Заранее спасибо. Хорошего дня.
-НВ
Я бы использовал мировое пространство.
Здесь есть хорошее 7,5-минутное руководство о том, как размещать элементы пользовательского интерфейса в мире (вместо экранного пространства): https://thewikihow.com/video_Zwgj3mwOVlg&ab_channel=CodeMonkey.
Вот еще один приятный: https://thewikihow.com/video_GuWEXBeHEy8&ab_channel=aboutgamemaking
По сути, вы размещаете свои UI-элементы в «мировом пространстве». изображение полотна в мировом пространстве.
Вместо этого использовать мировой космический холст? Ваш текущий холст всегда следует за камерой, так как он находится в пространстве экрана...