Как дать позицию игрока, который находится где-то в другом скрипте?C#

Место общения программистов C#
Ответить
Anonymous
 Как дать позицию игрока, который находится где-то в другом скрипте?

Сообщение Anonymous »

Некоторое время я пытался понять, как правильно предоставить другим скриптам на разных объектах положение игрока. Прямо сейчас мне нужно указать положение игрока, чтобы скрипт мог поместить за ним звук, и я не знаю, как это сделать.
Пожалуйста, помогите мне найти решение с помощью правильный подход: ООП, 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»