В основном я пытаюсь получить позицию игрока из скрипта противника. Я проверил позицию у самого игрока, и позиция всегда одна и та же (во время теста я вообще не перемещаю плеер). По какой-то причине, хотя, когда я получаю местоположение преобразования из сценария врага, он возвращает другое число, и число не меняется каждый раз. Вот некоторые из шнуров он даетUnity Reference Transform не всегда одинаково
(-0.5, 0.4, -6.7)
(-0.5, 0.5, -6.7)
(-0.5, 0.6, -6.7)
(-1.2, 0.6, -5.5)
(-1.3, 0.6, -6.7)
Хотя фактические шнуры объекта являются (-1.3, 0.6, -6.7). Я попытался создать функцию, которая напрямую получает преобразование, а затем вызывает это от объекта и противника, и такая же проблема возникает.
Вот это строки кода, которые создают и получить сценарий игрока:
Заявленный в классе
scr_Character player;
В Awake функции
player = FindObjectOfType<scr_Character>();
как примечание оба объекта имеют Контроллер символов и Жесткое тело с субобъектом, удерживающим их соответствующие сетки.
Любая помощь была бы значительно оценена.
Edit:
Похоже, ось у медленно становится все ниже и ниже спускаясь примерно 0,1 каждые 20 кадров или около того. Затем каждые 5 кадров он на самом деле печатает правильные шнуры, а затем продолжает отсчет с помощью неправильных шнуров.
Я создал дочерний объект, который также получает преобразование и, похоже, имеет такую же проблему.
playerTrans = GetComponentInParent<Transform>();
Редактировать снова: Похоже, что жесткая сила тяжести тела отвечает за значение у и заблокировав х он останавливает дрожание. Не знаю, что вызывает это, но это, похоже, устранило проблему.
Я не вижу, как вы получаете ссылку на объект игрока? Используйте тег для своего плеера и найдите тег. – Emad
действительно ли сценарий фактически не находит сам объект? Сценарий scr_Character является основным скриптом на проигрывателе, который имеет функцию, которую я использую, чтобы получить позицию игроков: public Vector3 getPosition() { { {} return transform.position; } –