Некоторое время я пытался понять, как правильно предоставить другим скриптам на разных объектах положение игрока. Прямо сейчас мне нужно указать положение игрока, чтобы скрипт мог поместить за ним звук, и я не знаю, как это сделать.
Пожалуйста, помогите мне найти решение с помощью правильный подход: ООП, SOLID и так далее.
Вот скрипт, который должен размещать звук позади игрока:
Код: Выделить всё
using UnityEngine;
public class PlaceSoundBehindPlayer : MonoBehaviour
{
private SoundPositionGenerator soundPositionGenerator;
[SerializeField] float spawnDistance = 10f;
public void PlaceBehind(Transform newPosition)
{
gameObject.transform.position = newPosition.position;
transform.position = soundPositionGenerator.NewSpawnApproachinSoundPosition(**playerTransform**, spawnDistance);
}
}
У меня были идеи по использованию событий: игрок запускает событие о себе в меню «Пуск», а другие скрипты просто запоминают экземпляр проигрывателя, подписываясь на это событие. Этот метод не кажется надежным, поскольку иногда звонки и подписки путаются. Я попробовал передать плеер из одного скрипта в параметры публичного метода другого скрипта. Но мне кажется, что это неправильный путь из-за нарушений ООП и других принципов.
Подробнее здесь:
https://stackoverflow.com/questions/790 ... her-script