Unity - Хорошая стрельба

แชร์
ฝัง
  • เผยแพร่เมื่อ 18 มี.ค. 2024
  • В этом ролике я покажу как сделать классную стрельбу с трассерами пуль.
    Подписывайтесь на канал , ставьте колокольчик , пишите комментарии о том что вы хотели бы видеть на канале ну и в целом свои впечатления.
    Поддержать канал можно тут :
    www.donationalerts.com/r/dillinger_pups

ความคิดเห็น • 40

  • @Margnall
    @Margnall หลายเดือนก่อน

    чувак ты гений

  • @user-qq1zo8oe2z
    @user-qq1zo8oe2z หลายเดือนก่อน +2

    Не знал, что есть компонент trail render. Хорошая реализация визуала пули. Спасибо за видос

  • @user-ih8je2sb6d
    @user-ih8je2sb6d 3 หลายเดือนก่อน +1

    Шикарный видос, все понятно и доходчиво🎉

  • @average_wreckingball_main
    @average_wreckingball_main 3 หลายเดือนก่อน +1

    Офигенные видосы, чел!
    Буду ждать больше контента)

  • @Mr_Pride
    @Mr_Pride 3 หลายเดือนก่อน +1

    Круто, контент в кайф

  • @Qwiz_Moment
    @Qwiz_Moment 3 หลายเดือนก่อน +1

    Отличный видос, удачи тебе в продвижение 👍

  • @Speed-Run-Facts
    @Speed-Run-Facts 2 หลายเดือนก่อน +2

    В целом очень даже годная реализация, хорошее видео.

  • @mrgoodkat1135
    @mrgoodkat1135 3 หลายเดือนก่อน +1

    Каеф, вот это магия! Спасибо! а мона еще вот такихвота прикольных механик!!))

  • @DenisFomin
    @DenisFomin 2 หลายเดือนก่อน +2

    Есть же возможность пускать райкасты в каждом кадре на ограниченное расстояние.
    Которое вычислить как паролетаемое полей за кадр.
    Итого, и райкаст проверяет столкновение и визуальная физика не страдает.
    А ещё можно сделать вот так
    RaycastHit hit;
    if (Physics.Linecast(previousPosition, newPosition, out hit, hitLayers))
    {
    Здесь Physics.Linecast используется для определения, произошло ли столкновение между предыдущей и текущей позицией пули.

    • @DILLINGER_PUPS
      @DILLINGER_PUPS  2 หลายเดือนก่อน

      Видео с исправлением всех ошибок данной реализации уже есть на канале)

  • @nobice1
    @nobice1 3 หลายเดือนก่อน +2

    9:30 - ахахаах, вынесло с этого момента xD
    Но видос всё равно полезный, спасибо

    • @DILLINGER_PUPS
      @DILLINGER_PUPS  3 หลายเดือนก่อน

      Я ж сказал заранее) - ступор мозговины иногда ловлю. Написать написал, пока тяжеловато с объяснением)

    • @lyten4287
      @lyten4287 3 หลายเดือนก่อน

      @@DILLINGER_PUPS ахахаха

  • @artursveshnikov7668
    @artursveshnikov7668 2 หลายเดือนก่อน +1

    Проверь профилировщиком загрузку цп, частый просчёт рэйкаста может прилично загрузить сцену. Как альтернатива, сделать rigit body у пули длинной в 2 метра, а визуальный меш короткий, обычный. Т.е. получается ты метаешь невидимое копьё со шкуркой пули и в каким то из кадров 100% будет пересечение с поверхностью.

  • @protogen123
    @protogen123 3 หลายเดือนก่อน +2

    Офигенный ролик,Сделай пожалуйста инвентарь в юнити:)

    • @liquid_name1068
      @liquid_name1068 3 หลายเดือนก่อน

      Поддерживаю идею с инвентарём

    • @DILLINGER_PUPS
      @DILLINGER_PUPS  2 หลายเดือนก่อน

      Видео же есть на канале : th-cam.com/video/AuO43-Lyrf4/w-d-xo.html

  • @psaPGL
    @psaPGL 2 หลายเดือนก่อน +1

    само видео как гайд, зачетное. + тебе в карму. но есть вопрос, - Что за точка попадения?

    • @DILLINGER_PUPS
      @DILLINGER_PUPS  2 หลายเดือนก่อน

      Это называется - безграмотность)

  • @PragmaGames
    @PragmaGames 12 วันที่ผ่านมา

    У тебя сейчас от fps завист как далеко пролетит пуля + лучше использовать лайнкаст и лайнить предыдущую позицию и текущую

  • @momentX_
    @momentX_ หลายเดือนก่อน

    Как называется редактор из видео?

  • @user-gb8ih5wl1t
    @user-gb8ih5wl1t 3 หลายเดือนก่อน +1

    попадАние, бро :D

  • @DILLINGER_PUPS
    @DILLINGER_PUPS  3 หลายเดือนก่อน +1

    Скрипты из урока t.me/unity_assets_free_main/1819

  • @tuttikfruttik6210
    @tuttikfruttik6210 3 หลายเดือนก่อน

    Хорошо, со стеной у тебя всё работает, но что по поводу врагов?
    Смоделируем ситуацию:
    Ты выстреливаешь в бегущего врага. Перед выстрелом рейкаст попадает во врага и передает startPoint и endPoint пуле. Затем, когда пуля долетает до endPoint, враг уже успел убежать => тоесть пуля не зарегистрирует врага
    Я чего то не догоняю?

    • @DILLINGER_PUPS
      @DILLINGER_PUPS  3 หลายเดือนก่อน +1

      Забыл про эту условность в данном ролике , в следующем ролике про улучшение стрельбы поясню за это.

    • @tuttikfruttik6210
      @tuttikfruttik6210 3 หลายเดือนก่อน +1

      @@DILLINGER_PUPS Я бы предложил первым рейкастом проверять только объекты на определенном слое, которые точно не будут двигаться (стены например)

    • @DILLINGER_PUPS
      @DILLINGER_PUPS  3 หลายเดือนก่อน

      Так и есть , у оружия надо лишь в стены попадать , но мы сделаем ещё проще , будем передавать пуле стартовую позицию , а конечная точка будет стартовая позиция + стартовая позиция.forward * 500f и даже рейкаст не нужен первый. Он у оружия остался так как стрельба до этого была при помощи обычного рейкаста)

    • @tuttikfruttik6210
      @tuttikfruttik6210 3 หลายเดือนก่อน

      @@DILLINGER_PUPS Ну я полагаю тогда можно обойтись без корутин. Если мы в пуле в старте пропишем Destroy(gameObject, 5f);
      А в Update будем просто передвигать пулю при помощи transform.Translate(transform.forward * speed * Time.deltaTime);
      Ну и там же делать проверку рейкастом
      Я полагаю эффект будет тот же)

  • @stbnsnt
    @stbnsnt หลายเดือนก่อน

    А зачем вообще заранее конечную позицию определять? Достаточно же просто направления выстрела пули, и в этом направлении с постоянной скоростью мы ее перемещаем.

  • @skf-wm7ft
    @skf-wm7ft 2 หลายเดือนก่อน

    Зачем нужен тернарный оператор в 26 строчке?

    • @DILLINGER_PUPS
      @DILLINGER_PUPS  2 หลายเดือนก่อน

      Гарантия того что не будет NullReference Exception

  • @SLiZER-WHiTE
    @SLiZER-WHiTE 2 หลายเดือนก่อน +1

    Извинитесь, пожалуйста поработайте над своей речью, что бы когда думаете не произносить звук (э), спасибо

    • @DILLINGER_PUPS
      @DILLINGER_PUPS  2 หลายเดือนก่อน

      Стараюсь , но пока выходит скверно , скорей всего в с следующих роликах начну эту шляпу править редактированием вручную, пока не избавлюсь от этой привычки.

    • @artursveshnikov7668
      @artursveshnikov7668 2 หลายเดือนก่อน +2

      Да нормально он все произносит. Тут тебе не филологический кружок. Можно поставить скорость на 1.5 и вообще незаметно будет. Автор, лучше почаще выпускай такие видосы, и не слушай всяких доморощенных филологов. А дикция сама со временем натренируется.
      А шляпа, это такие комменты, которые сбивают с цели и вместо полезного контента заставляют заниматься ненужными правками. Для настоящих фанатов игр содержание всегда намного важнее формы

    • @Fravia-incm
      @Fravia-incm 2 หลายเดือนก่อน +1

      Полностью поддерживаю коммент Артура

  • @flugenkehhannen
    @flugenkehhannen หลายเดือนก่อน

    Bullet bulletC = Instantiate(bullet, _shootPosition.position, _shootPosition.Ratation).GetComponent(); а теперь представьте у вас миниган с 6000 выстрелов в минуту т е 100 выстрелов в секунду и например их в игре 5 одновременно. Что будет с игрой на телефоне кто угадает?

    • @DILLINGER_PUPS
      @DILLINGER_PUPS  หลายเดือนก่อน +1

      Слишком много "если" , "может" , "наверное". Все выбирают тот способ который им в данной ситуации подходит , для такой стрельбы которую ты "Представил" - никакой способ кроме обычных рейкастов и парочки спецэффектов которые имитируют такой массивный огонь не подойдёт. Таким образом можно хоть миллиард выстрелов в минуту представить , а толку? Если нигде такого нету , а реализацию стрельбы каждый выбирает исходя из ситуации. Моим методом можно сделать какой-либо рогалик , снайпера или что-то типо того.

    • @flugenkehhannen
      @flugenkehhannen หลายเดือนก่อน

      Блин чувак, если ты не понимаешь, почему не надо делать GetComponent каждый выстрел, то сорян. Для справки - ты можешь спавнить не только Gameobject.

    • @PragmaGames
      @PragmaGames 12 วันที่ผ่านมา

      ​​@@flugenkehhannen под капотом unity берет такой же get component при передаче аргументом что-то отличное от gameObject. Это можно проверить самостоятельно. Заспавнить 1000000 game object, а потом взять компонент, сразу заспавнить "компонент". Разница будет во времени обращения к нативному коду * на количество итераций * на издержеку вызова метода.