Как указать координаты объекта в юнити 2d
В коде приведённом ниже, нужно указать координаты GameObject Player как это сделать?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DoorOpen : MonoBehaviour
{
private const float openable_distance = 3f;
private bool isOpened = false;
private SpriteRenderer rend;
private BoxCollider2D coll;
private float dist;
[SerializeField] private Sprite OpenedGate, ClosedGate;
private void Start()
{
rend = GetComponent<SpriteRenderer>();
coll = GetComponent<BoxCollider2D>();
}
private void Update()
{
Vector3 dist = Vector3.Distance(transform.position, СЮДА НУЖНО КООРДИНАТЫ ИГРОКА.transform.position);
if (Input.GetKeyDown(KeyCode.F) && dist <= openable_distance)
{
if (isOpened == false)
{
rend.sprite = OpenedGate;
coll.enabled = false;
isOpened = true;
}
else
{
rend.sprite = ClosedGate;
coll.enabled = true;
isOpened = false;
}
}
}
}
Ответы (1 шт):
Автор решения: Methorn
→ Ссылка
Тебе нужно обратиться к свойству position класса Transform твоего объекта и указать его в качестве параметра
private Transform _playerTransform = default;
private void Start()
{
_playerTransform = GameObject.FindWithTag("Player").GetComponent<Transform>();
}
private void Update()
{
Vector3 dist = Vector3.Distance(transform.position, _playerTransform.position);
}
Либо закешировать объект через редактор и потом также указать
[SerializeField]
private Transform _someObjectTransform = default;
private void Update()
{
Vector3 dist = Vector3.Distance(transform.position, _someObjectTransform.position);
}
А вообще в Update() инициализировать новую переменную типа Vector3 и потом еще брать различные значения объектов очень дорого по ресурсам. Вынеси в отдельный метод и вызывай его