Вопрос по Аниматору и скриптам
|
|
wing13 | Дата: Суббота, 27 Июля 2013, 19:14 | Сообщение # 1 |
участник
Сейчас нет на сайте
| Привет всем! Вопроса у меня сегодня два. 1. У меня в игровом мире респамятся призраки, все они управляются одним скриптом и все убиваются с одного выстрела. Я решил сделать им HP, что бы выдерживали 2-3 попадания, но переменная применяется сразу ко всем призракам. Как хранить жизнь каждого призрака отдельно? 2. Хочу еще сдеть зомби, поставил зомбака, повесил не него аниматор, в AnimationControllerе сделал дефолтную анимацию (стоит, руками машет), и переход к анимации смерти при значении его HP<1, но это переменная в аниматоре, а как связать ее с перемнной в скрипте?
(на второй вопрос ответ:
var anim : Animator; function Update () { anim.SetFloat("Имя переменной в аниматоре", Имя переменной в скрипте); }
Я вконтакте
Сообщение отредактировал wing13 - Воскресенье, 28 Июля 2013, 01:20 |
|
| |
Левша | Дата: Суббота, 27 Июля 2013, 20:27 | Сообщение # 2 |
почти ветеран
Сейчас нет на сайте
| Цитата (wing13) Как хранить жизнь каждого призрака отдельно? Не использовать static var.
X.cor.R (Prologue)
|
|
| |
wing13 | Дата: Суббота, 27 Июля 2013, 20:35 | Сообщение # 3 |
участник
Сейчас нет на сайте
| А можно подробнее? Как мне снять хиты с определенного призрака? Вот я попадаю в призрака if (hit.collider.tag == "Spirit") и снимаю ему жизнь {Ghosts_Stats.HP--;} если переменная HP будет не статик, то она не распространится на всех?
Призраков если что изначально в сцене нет, они создаются респавнером с одинаковыми параметрами, которые задаются перемнными скрипта Ghosts_Stats
Я вконтакте
Сообщение отредактировал wing13 - Суббота, 27 Июля 2013, 20:39 |
|
| |
lentinant | Дата: Воскресенье, 28 Июля 2013, 00:41 | Сообщение # 4 |
ленивый программист
Сейчас нет на сайте
| Как по мне, ХП должно быть в скрипте, прикрепленном к самому gameObject призрака. Тогда в OnCollisionEnter можно получить доступ к скрипту конкретного призрака с помощью collision.gameObject.GetComponent<HealthScript> (подставить свое название скрипта), и изменять переменную в нем.
Когда-то тут будут ссылки на крутые проекты. Или нет.
|
|
| |
wing13 | Дата: Воскресенье, 28 Июля 2013, 01:05 | Сообщение # 5 |
участник
Сейчас нет на сайте
| lentinant спасибо, это работает
Я вконтакте
|
|
| |
sinoptis | Дата: Воскресенье, 28 Июля 2013, 17:26 | Сообщение # 6 |
почетный гость
Сейчас нет на сайте
| Вам не кажется, что перед тем как начать писать скрипты, стоило ознакомиться хотя бы с основами ЯП?
|
|
| |
JewReptile | Дата: Воскресенье, 28 Июля 2013, 17:39 | Сообщение # 7 |
частый гость
Сейчас нет на сайте
| Цитата (wing13) anim.SetFloat("Имя переменной в аниматоре", Имя переменной в скрипте); Лучше использовать хеши, лол.
|
|
| |
wing13 | Дата: Воскресенье, 28 Июля 2013, 18:02 | Сообщение # 8 |
участник
Сейчас нет на сайте
| Цитата (sinoptis) Вам не кажется, что перед тем как начать писать скрипты, стоило ознакомиться хотя бы с основами ЯП? Даже не знаю, я вообще не кодер и тупо исхожу из того, что мне нужно сделать сейчас.
Цитата (JewReptile) Лучше использовать хеши, лол. А как?
Я вконтакте
|
|
| |
JewReptile | Дата: Воскресенье, 28 Июля 2013, 20:31 | Сообщение # 9 |
частый гость
Сейчас нет на сайте
| Меканимовские параметры и стэйты можно представлять в виде хешей. Например, если нам нужно получить хеш параметра Speed, то мы создаем переменную типа int. А потом назначаем этой переменной хеш. Код speedFloat = Animator.StringToHash("Speed") Переменная называется speedFloat, потому что параметр в меканиме - float, это делается для того, чтобы не запутаться. Если нужно получить доступ к стейту, то нужно обращаться как: Код Animator.StringToHash("имя слоя.название стейта"); Ну а потом заместо строки-названия при обращении указывать хеш. Все просто. Чтобы не получать каждый раз эти значения, в официальных юнититуторах предлагают создать отдельный скрипт с публичными переменными хешей, назначить их при старте, повесить скрипт на какой-либо один объект (главный геймконтроллер, например) и получать хеши уже оттуда.
Сообщение отредактировал JewReptile - Воскресенье, 28 Июля 2013, 20:32 |
|
| |