• Как сделать, чтобы персонажа отталкивало в обратную сторону при получении урона в unity?

    MSerhio
    @MSerhio
    Вхожу в IT
    Самое простое, что приходит в голову - в каждом кадре считать вектор движения (дельта текущей позиции и позиции в прошлом кадре) и при столкновении с препятствием прикладывать силу в обратном этому вектору направлении. Если вы не используете физический движок, придется дописать метод, который будет вызываться при коллизии и по вашим правилам двигать персонажа назад.
    Ответ написан
    Комментировать
  • Делегаты, зачем?

    MSerhio
    @MSerhio
    Вхожу в IT
    Делегат позволяет ослабить связность кода, а рассматривать их стоит вместе с событиями.
    Я объясню на примере игростроя.
    Популярный в сети пример: во врага попала пуля. Должно случиться сразу много вещей - нужно снять здоровье врага, выяснить, не погиб ли он, проиграть анимацию, уничтожить пулю, начислить очки игроку и еще что-то.
    Если мы будем всё это вызывать напрямую, то быстро запутаемся и ошибемся. А когда будем переделывать, сломаем всё окончательно.
    Вот тут нас выручат делегаты и события. Мы определим событие, которое срабатывает (вызывает свой делегат) в момент попадания пули. И соответственно, определим делегат для этого события.
    Теперь каждый метод, которому это событие интересно, может подписаться на его делегат (внести себя в список вызываемых делегатом методов - их может быть больше одного).
    И теперь мы можем переделывать что угодно. Главное, не забывать подписываться и отписываться.
    Делегат, это как автолавка в деревне: приезжает и сигналит. Кому надо - выходит. При этом ни автолавке ни покупателям не интересно, что происходит у каждой из сторон в отдельности.
    Ответ написан
    Комментировать