Войти
Unreal EngineФорумОбщее

Проджектайл летит из начального положения сокета

#0
15:38, 28 янв 2022

Программирую систему стрельбы из оружия. Оружие представляет собой актор со скелетал мэшом с сокетом, из которого спавниться актор пули через spawn actor from class. Проблема в том, что когда актор оружия приаттачен к актору/мэшу персонажа и персонаж двигается, сокет тоже двигается, но сама пуля вылетает из той точки, в которой был сокет в момент старта игры.

#1
16:11, 28 янв 2022

Тут без картинок и куска кода не понятно, покажи как приатачено оружие к персонажу, как в самом оружии сокет сделан, к какой кости приатачен, и покажи как ты спавнишь прожектайлы там будет видно что за сокет ты берешь в работу.

#2
16:12, 28 янв 2022

TommYMoonlight
приложите скриншот ноды spawn actor from class, и обязательно, чтоб туда влезало все, откуда берется Position для Transform

#3
17:15, 28 янв 2022

i4ugui
R1pp3R
Система выстрела настроена в Master блюпринте оружия и работает через переменную типа transform:

+ Показать

В child блюпринте Master блюпринта при начале игры этой переменной задается transform сокета:

+ Показать

Для спавна пули пробовал использовать разные сокеты от разных костей, разницы нет.
1-й сокет:

+ Показать

2-й сокет:

+ Показать

3-й сокет:

+ Показать

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

+ Показать

Пробовал также вместо ноды Attach actor to component ноды Attach component to actor (аттач мэша оружия к актору персонажа) и Attach component to component (аттач мэша оружия к мэшу персонажа).

Видео того, как все работает в игре:
https://youtu.be/wPtDI3Ac_Xo
В качестве координат для print string используются координаты сокета, из которого производиться выстрел.

#4
17:25, 28 янв 2022

Нужен экран BP_Weapon_Riffle->Shoot(), ошибка там. Вы стреляете не от туда и видимо не учитываете направление ствола.

#5
17:26, 28 янв 2022

Salamandr
Я пробовал разные настройки спавна оружия и были случаи, когда оружие летало в воздухе. В настройках коллизии мэша оружия поставил NoCollision, но это не помогло.

#6
17:26, 28 янв 2022

Вы серьезно? В begin play задали параметры (точные цифры) переменным, и затем на эти цифры ссылаетесь - все работает как положено.

То, что вы хотите сделать - подключите эту же ноду (GetSocketTransform) прямиком к SpawnActorFromClass.


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

#7
17:30, 28 янв 2022

Если по уму доделать то, что вы пытались сделать - в родителе подключите GetSocketTransform к спаун. Название сокета выведите в переменную, и в дочерних классах,просто, задаете значение этой переменной

#8
17:32, 28 янв 2022

R1pp3R
> Вы серьезно? В begin play задали параметры (точные цифры) переменным, и затем
> на эти цифры ссылаетесь - все работает как положено.
А что не так? Значения задаются один раз при старте игры, затем используются на других ивентах, которые происходят после begin play, то есть после того, как переменные заданы.
> То, что вы хотите сделать - подключите эту же ноду (GetSocketTransform)
> прямиком к SpawnActorFromClass.
Помогло, спасибо, проблема решена.
> П.с. делайте перерывы. Когда долго работаешь без отдыха, начинаешь тупить в
> элементарных вещах
Спасибо за совет, но всю логику в этом проекте я написал полностью осознанно и осмысленно.

#9
17:35, 28 янв 2022

TommYMoonlight
> А что не так? Значения задаются один при старте игры, затем используются на
> других ивентах
все работает в точности так, как вы делаете. Просто вы не совсем понимаете, что именно вы делаете)

Значение переменной вы задали единожды вначале игры, и, в процессе игры, они не меняются.
То что сокет в процессе игры меняет свое положение, уже никого не волнует, вы запрашиваете данные не с сокета, а те, которые вы вначале игры и дали :)

#10
17:38, 28 янв 2022

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

Unreal EngineФорумОбщее

Тема в архиве.