Имеется сцена StrategyLike, на которой могут находиться несколько Плееров, в их скриптах есть инт переменная, отвечающаа за команду, за которую играет этот персонаж, и флоат переменная с хп. Имеется зона, в простонародии "Фонтан", соответственно есть триггер. В скрипте фонтана тоже прописана Team. Так вот, фонтан должен проверять принадлежность к команде Персонажа, входящего в его триггер, и соответственно действовала на его ХП. Простите, если криво описал ситуацию.
if(collider.tag=="Team_1"){/// если игрок из команды 1, то... /// воздействуем на его ХР } if(collider.tag=="Team_2"){///если игрок из команды 2, то... /// воздействуем на его ХР } }
Каждому игроку назначить тег с его командой. Не проверял, но должно работать.
Re: Взаимодействие триггера со скриптом персонажа
Добавлено: 19 июл 2015, 13:15
Kotofeyich
Алифар писал(а):Как один из самых простых вариантов:
if(collider.tag=="Team_1"){/// если игрок из команды 1, то... /// воздействуем на его ХР } if(collider.tag=="Team_2"){///если игрок из команды 2, то... /// воздействуем на его ХР } }
Каждому игроку назначить тег с его командой. Не проверял, но должно работать.
Это я понимаю, но мне нужен скрипт самого взаимодействия. Я немного не понимаю как реализовать взаимодействие фонтана на персонажей, и к тому же если их будет много с одинаковыми скриптами.
Re: Взаимодействие триггера со скриптом персонажа
Добавлено: 19 июл 2015, 13:31
samana
Пусть фонтан запоминает кто находится в его области, добавляя и удаляя игроков из массива при triggerEnter и triggerExit. А когда нужно, то пробежаться по массиву и уже отнять hp у кого надо, вычисляя его id.
Re: Взаимодействие триггера со скриптом персонажа
Добавлено: 19 июл 2015, 14:05
Kotofeyich
samana писал(а):Пусть фонтан запоминает кто находится в его области, добавляя и удаляя игроков из массива при triggerEnter и triggerExit. А когда нужно, то пробежаться по массиву и уже отнять hp у кого надо, вычисляя его id.
Можешь пожалуйста привести пример самого скрипта, потому что в голове пока не укладывается как это комбинить.
publicclass Fontan : MonoBehaviour { // список с игроками private List<Transform> objectsInFontan =new List<Transform>();
//если игрок зашёл в триггер, помещаем игрока в список void OnTriggerEnter(Collider col) { if(col.CompareTag("Player")) {
objectsInFontan.Add(col.transform); } }
//если игрок покинут триггер, то удаляем его из списка void OnTriggerExit(Collider col) { if(col.CompareTag("Player")) {
objectsInFontan.Remove(col.transform); } }
//нанести урон на 10 hp всем игрокам находящимися в области триггера, //если они состоят в команде 1 publicvoid Damage() { foreach(Transform player in objectsInFontan) {
PlayerScript script = player.GetComponent<PlayerScript>(); if(script.myCommand== 1)
script.HP-=10; } }
Думаю это не единственный способ и возможно что-то не учтено.
publicclass Fontan : MonoBehaviour { // список с игроками private List<Transform> objectsInFontan =new List<Transform>();
//если игрок зашёл в триггер, помещаем игрока в список void OnTriggerEnter(Collider col) { if(col.CompareTag("Player")) {
objectsInFontan.Add(col.transform); } }
//если игрок покинут триггер, то удаляем его из списка void OnTriggerExit(Collider col) { if(col.CompareTag("Player")) {
objectsInFontan.Remove(col.transform); } }
//нанести урон на 10 hp всем игрокам находящимися в области триггера, //если они состоят в команде 1 publicvoid Damage() { foreach(Transform player in objectsInFontan) {
PlayerScript script = player.GetComponent<PlayerScript>(); if(script.myCommand == 1)
script.HP-=10; } }
Думаю это не единственный способ и возможно что-то не учтено.
Ну смотри, я ради теста максимально сократил скрипт:
if(unit.tag=="Player"){
PlayerScript player = unit.GetComponent<PlayerScript>();//PlayerScript - скрипт игрока
player.active= true;//active - булевая перемення, объявленная в скрипте Navigation } } }
Скрипт написан на примере твоего. Не работает. Где ошибка?
Re: Взаимодействие триггера со скриптом персонажа
Добавлено: 20 июл 2015, 13:17
getAlex
Это немного странный подход(т.к. обычно через компонент не делают), но я всё же посоветую. Начнём с того, что реген от фонтана это эффект, такие как замедления от ледяной стрелы, стан, яд или аура урона. Когда плеер входит в зону фонтана, сперва проверяется за какую команду(союзник/враг) фонтан и за какую команду игрок. Если в настройках спела указано, что текущий спел распространяется на союзников, а не на врагов(ещё можно проверять действует ли на воздушные единицы, на технику и т.д.), тогда игроку добавляется компонент Regen: ISpell , который в свою очередь хеширует GetComponent<Player>() и дальше воздействует на характеристики плеера. Если это аура, то компонент сам себя уничтожает через какой-то определённый тик времени(даже если аура моментальна - должен быть тик). Если же это какой-то "морозная стрела 5 уровня", то у неё в характеристиках и так есть сколько она висит на персонаже. Как только компонент отваливается, он перестаёт действовать на персонажа. Для моментальных аур ещё можно проверять "находится в зоне", чтоб не было как в вар3 иногда глючили ауры и мелькали.
Re: Взаимодействие триггера со скриптом персонажа
Добавлено: 20 июл 2015, 13:52
Kotofeyich
getAlex писал(а):
Скрытый текст:
Это немного странный подход(т.к. обычно через компонент не делают), но я всё же посоветую. Начнём с того, что реген от фонтана это эффект, такие как замедления от ледяной стрелы, стан, яд или аура урона. Когда плеер входит в зону фонтана, сперва проверяется за какую команду(союзник/враг) фонтан и за какую команду игрок. Если в настройках спела указано, что текущий спел распространяется на союзников, а не на врагов(ещё можно проверять действует ли на воздушные единицы, на технику и т.д.), тогда игроку добавляется компонент Regen: ISpell , который в свою очередь хеширует GetComponent<Player>() и дальше воздействует на характеристики плеера. Если это аура, то компонент сам себя уничтожает через какой-то определённый тик времени(даже если аура моментальна - должен быть тик). Если же это какой-то "морозная стрела 5 уровня", то у неё в характеристиках и так есть сколько она висит на персонаже. Как только компонент отваливается, он перестаёт действовать на персонажа. Для моментальных аур ещё можно проверять "находится в зоне", чтоб не было как в вар3 иногда глючили ауры и мелькали.
Можешь закрепить это все примером, ибо я пока что рак. Я примерно понял о чем ты, но до сих пор не понимаю, как будет производиться воздействие на скрипт.
Re: Взаимодействие триггера со скриптом персонажа
Добавлено: 20 июл 2015, 17:54
getAlex
Kotofeyich писал(а):Можешь закрепить это все примером, ибо я пока что рак.
Ну так учись быть не раком, а потом пиши. Мне влом ради примера писать 200 строчек кода.