Size: a a a

2020 September 28

С

Сэр MSTR in Unreal Engine
Михаил Лукьянов
у тебя каждый эквип должен быть обязательно полноценным актером?
Экипировка да, потому что в ней инвентари находятся и этого эктора дестроить нельзя, вооружение тоже хотелось бы экторами сделать
источник

С

Сэр MSTR in Unreal Engine
Блин, надо проверить при конченых настройках соединения что будет происходить
источник

МЛ

Михаил Лукьянов... in Unreal Engine
конченная репликация xD
источник

МЛ

Михаил Лукьянов... in Unreal Engine
вообще хз. Я для Синтеза делаю еквипы именно компонентами + доп компонент для сборки из ассетов
источник

МЛ

Михаил Лукьянов... in Unreal Engine
но мне это нужно, на случай, если на сервере есть модифицированный еквип. Чтоб на клиент прилетал без необходимости обновления
источник

С

Сэр MSTR in Unreal Engine
Ну у меня компонент инвентаря находится именно у эктора который представляет собой штаны/куртку/рюкзак и т д
источник

МЛ

Михаил Лукьянов... in Unreal Engine
ща, покажу как сделал
источник

МЛ

Михаил Лукьянов... in Unreal Engine
источник

С

Сэр MSTR in Unreal Engine
вообще я видел такую систему в скаме, там даже видно на клиенте как спаунятся экторы экипировки и затем их меши скрываются для игрока
источник

МЛ

Михаил Лукьянов... in Unreal Engine
здесь: Hardpoints сцена для монтирования, где ниже идет Контейнер конкретных точек монтирования с настройками
ShipAssetComponent принимает ULoadOut объект, который содержит список еквипа с привязкой к точке монтажа
источник

МЛ

Михаил Лукьянов... in Unreal Engine
источник

МЛ

Михаил Лукьянов... in Unreal Engine
источник

МЛ

Михаил Лукьянов... in Unreal Engine
и проблем с аттачами нет, потому что клиент этим вообще не рулит
источник

МЛ

Михаил Лукьянов... in Unreal Engine
и при этом я полностью контролирую весь еквип, даже если актера нет. Достаточно поменять параметры в объекте лоадаута, или вообще новый создать
источник

С

Сэр MSTR in Unreal Engine
Михаил Лукьянов
if (RootComponent->GetAttachParent() != nullptr)
     {
       // Networking for attachments assumes the RootComponent of the AttachParent actor.
       // If that's not the case, we can't update this, as the client wouldn't be able to resolve the Component and would detach as a result.
       AttachmentReplication.AttachParent = RootComponent->GetAttachParent()->GetAttachmentRootActor();
       if (AttachmentReplication.AttachParent != nullptr)
       {
         AttachmentReplication.LocationOffset = RootComponent->GetRelativeLocation();
         AttachmentReplication.RotationOffset = RootComponent->GetRelativeRotation();
         AttachmentReplication.RelativeScale3D = RootComponent->GetRelativeScale3D();
         AttachmentReplication.AttachComponent = RootComponent->GetAttachParent();
         AttachmentReplication.AttachSocket = RootComponent->GetAttachSocketName();

         // Technically, the values might have stayed the same, but we'll just assume they've changed.
         bWasAttachmentModified = true;
       }
     }
ээээм, но тут речь идет о RelativeLocation
источник

МЛ

Михаил Лукьянов... in Unreal Engine
ну разумеется. Если есть атач, то реплика идет в относительной трансформе. Это логично
источник

С

Сэр MSTR in Unreal Engine
Михаил Лукьянов
ну разумеется. Если есть атач, то реплика идет в относительной трансформе. Это логично
похоже вот это как раз и есть репликация самого момента аттачмента
источник

МЛ

Михаил Лукьянов... in Unreal Engine
нет. Это реплика идет по изменению локации или рута
источник

МЛ

Михаил Лукьянов... in Unreal Engine
т.е. в момент аттача, и в момент движения
источник

МЛ

Михаил Лукьянов... in Unreal Engine
ну и в момент диаттача тоже
источник