У меня есть проблема, которую я пытался решить в последние 2 дня, но не мог с собой справиться.
Я работаю над игрой, в которой у NP C есть прикрепленный аниматор. и нужно получить доступ к его параметрам.
Я устанавливаю параметр String в виде пустой строки
[SerializeField] string _parameter = "";
и в качестве частного поля я устанавливаю:
int _parameterHash= -1;
В my Start () я сохранил ссылку на StateMachine
_stateMachine = transform.root.GetComponentInChildren<AIStateMachine> ();
Теперь, в моем Unity, я установил 3 коллайдера на NP C, который будет сталкиваться с игроком в определенный момент времени и генерировать урон Для этого в параметре NP C я поставил - RightHand - LeftHand - Mouth
То же наименование в параметрах аниматора
Сторона кода, в методе запуска я объявил:
_parameterHash = Animator.StringToHash (_parameter);
Чтобы преобразовать переменную параметра в код ha sh и передать результат как _parameterHa sh в:
if (col.gameObject.CompareTag ("Player") && _animator.GetFloat(_parameterHash) >0.9f)
{
if (GameSceneManager.instance && GameSceneManager.instance.bloodParticles)
{
ParticleSystem system = GameSceneManager.instance.bloodParticles;
// Temporary Code
system.transform.position = transform.position;
system.transform.rotation = Camera.main.transform.rotation;
system.simulationSpace = ParticleSystemSimulationSpace.World;
system.Emit (_bloodParticlesBurstAmount);
}
Debug.Log ("Player being Damaged ");
}
Но вот где у меня проблема. Если я нажимаю Play, я получаю предупреждение о том, что параметр Ha sh не существует.
Поэтому, чтобы убедиться, что в моем коде нет опечаток, я жестко закодировал StringtoHa sh с помощью:
_parameterHash = Animator.StringToHash ("LeftHand");
Таким образом, все работает просто отлично. Я получаю удар по NP C, и код воспроизводит эффект частиц.
Поэтому я верю, что в runTime моя строка параметров остается пустой, поэтому он не может найти код ha sh.
Кто-нибудь может исправить меня, если я ошибаюсь, и помочь мне выяснить, как я могу решить эту проблему?
Идея состоит в том, чтобы иметь группу одинаковых NP C, обращающихся к одному и тому же аниматору. и с таким же поведением.
Большое спасибо за ваше время и помощь, ребята.