У меня есть объект, на него налеплена моделька человека. Идея такая, я наношу удар по ноге, и она отваливается. Я решил сделать так: при запуске скрипта "отваливания " ноги модель человека изменяется на модель без ноги, и создается новый объект с моделькой отрубленной ноги) Но есть загвоздка - как сделать так, чтобы начальный объект распознал, что его ударили именно в ту зону, где у него нога? Подскажите пожалуйста, хотя бы в общем виде, из-за этого у меня работа стоит)
Хм спасибо за идею, дело в том, что я только начал иметь дело с юнити и не дошел еще до триггеров, поэтому не знаю про них) Буду разбираться) Если есть еще какие-нибудь мысли, поделитесь, пожалуйста
Хм, а как сделать, чтобы атака шла именно в коллайдер? У меня раньше таргет атаки задавался через GameObject.FindObjectWithTag("Enemy"), потом при нажатии клавиши вызывался метод атаки, который отнимал ХП. Получается, нужно, чтобы в таргете был триггер? Или как?
Бьешь допустим ногой по противнику. На противнике на каждой части тела висят триггерКолайдеры с тегами. При попадании в определенный тег (допустим *левая нога*), производишь соответствующие действия. На ударной ноге игрока тоже должен висеть коллайдер. Ну и про rigidBody не забывай, они могут быть нейтральны (галка на IsKinematik), но обязаны присутствовать на всех обьектах с триггерами, иначе триггеры не сработают. X.cor.R (Prologue)
То есть при нажатии на кнопку атаки нужно, чтобы коллайдер, повешанный на игрока, совершал движение по заданной траектории и врезался в коллайдер врага? Я правильно понял?
Я сделал анимацию для удара(например двигаем рукой, на неё повешен коллайдер), она двигается вперед, потом назад, а как сделать, чтобы при столкновении с коллайдером врага что-то происходило? Я написал в скрипте, привязанном к руке
Volandpro, эхх брателла, делай что попроще пока... учись. Я тебе прямой алгоритм дал, который ты успешно проигнорировал. А лекции тут каждому новичку по новой читать, никакого времени не хватит... X.cor.R (Prologue)
Вроде даже заработало) Правда, у меня есть 2 вопроса: обязательно. чтобы на объектах висел ригидбоди? И второй, Ehp eh=new Ehp();eh.ACHP(-10); не работает, хотя я точно помню, как вызвать метод из другого класса) Но все равно огромное спасибо) Кстати, спасибка не тыкается, пишет, что капча введена неправильно
P.S. с методами разобрался) Прям чувствую повышение своего скила)
Сообщение отредактировал Volandpro - Чт, 23 Авг 2012, 00:59
Это работает в обычном C#, без юнити. ТАм в вижуал студио и т.д. Здесь не работает)
Добавлено (23.08.2012, 13:45) --------------------------------------------- Блин, люди последний вопрос) Как сделать, чтобы ОнТриггерЕнтер срабатывал только при нажатии кнопки?
Так уже ж ответили. Меняй OnTriggerEnter на OnTriggerStay
Quote
Это работает в обычном C#
Так как Вы написали нигде не заработает. Ну или, если eh.ACHP(-10) просто что-то левое делает, независимое от приведенного кода - тогда это индусский код.
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace ConsoleApplication3 { class Program { static void Main(string[] args) { Program1 n = new Program1(); n.OLOLO(); Console.WriteLine(n.m.ToString()); Console.Read(); } } class Program1 { public int m; public void OLOLO() { m = 5; } } }
Где вы используете то, что делается в eh.ACHP? Зачем вообще вызов этого метода?
Code
n.OLOLO(); Console.WriteLine(n.m.ToString());
Здесь после аналогичного вызова созданный объект используется! Разницу чуствуете? И еще раз. Даже первый код нормально работает. В eh.ACHP(-10); Вы, например можете вывести на экран что-нибудь со смещением -10. Однако это неправильное решение - "индусский код".
Чтобы все объяснить, мне нужно привести весь алгоритм работы скриптов и связь между ними, а это долго)
Code
Ehp eh=new Ehp(); eh.ACHP(-10);
Это находится в скрипте атаки, метод из другого скрипта вызывается, когда происходит столкновение коллайдеров. eh.ACHP(-10); это метод расчета изменения ХП у врага, (-10) число, насколько изменяется ХП. eh - объект скрипта, который работает с ХП врага. Короче,при атаке вызвыается метод, меняющий ХП) Скорее всего это все криво, но я не мего прогер)
Да ничего объяснять и не надо. Тут логики то никакой и нет. Полная лажа именно это:
Code
Ehp eh=new Ehp();
Вы что не понимаете что это значит? Вы создаете новый экземпляр скрипта врага. НОВЫЙ! Который после выхода за первую же скобку исчезнет, как будто его и не было!
Code
eh.ACHP(-10);
Тут Вы у этого экземпляра уменьшаете hp [code]}[/code] Все! Ничего не сохранилось! Никаких изменений hp никто не запомнил! Потому как объекта eh уже не существует! ЗЫ: Совет - поучите программирование. Вот это: "GetComponent<Ehp>().ACHP(-10); " куда правильнее. PPS: на скобку тег code не действует, но думаю и так понятно