У меня 2D игра в единстве. Я хочу, чтобы изображение пользовательского интерфейса (то есть в объекте canvas) перемещалось по объекту игрока / врага.
С моим сценарием изображение пользовательского интерфейса движется, но корабль медленнее, чем трансформация игрового объекта, не то же самое, что изображение пользовательского интерфейса.
Вот мой код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ClampUIonPlayer : MonoBehaviour
{
public Image img;
Camera cam;
public Canvas canvas;
private void Start()
{
cam = GameObject.Find("FullScaleRadarCamera").GetComponent<Camera>();
}
// Update is called once per frame
void Update()
{
Vector3 imgVec = cam.WorldToScreenPoint(this.transform.position);
//img.transform.position = imgVec;
Vector2 movePos;
//Convert the screenpoint to ui rectangle local point
RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas.transform as RectTransform, imgVec, canvas.worldCamera, out movePos);
img.transform.position = movePos;
Debug.Log(movePos);
}
}
Корабль игрока содержит этот скрипт. Пользовательский интерфейс изображения находится внутри холста.
Изображение пользовательского интерфейса отображается только на втором самере (я делаю все это, чтобы отображать изображения игроков в моей игре на мини-карте. Но мне нужно использовать изображения пользовательского интерфейса, а не только вторую камеру, потому что я необходимо иметь эффект наведения на игроков на миникарте. Кажется, что эффект наведения не может работать во второй камере (с raycast, для стандартных игровых объектов).
Вот моя сцена:
https://photos.app.goo.gl/UoLtTu4mKXffq7UBA
Вот видео моей проблемы. Выбранный корабль - зеленый ящик, остальные корабли, более быстрый, - красный ящик. Я контролирую их обоих одновременно. Иконки интерфейса не перемещаются 1: 1 с этими кораблями.
https://photos.app.goo.gl/hXu8aV2UFfcZzBoC6
Спасибо за любую помощь.
Я пытался решить эту проблему Переместить пользовательский интерфейс RectTransform в мировое положение
Я скопировал скрипт как есть, но изображения пользовательского интерфейса не будут перемещаться отдельно, они почему-то перемещаются как единое целое.