Я использую класс C++ Character для перемещения персонажа в игре с помощью AddInputMovement().
Однако он перемещается только в том случае, если к нему не прикреплен MeshComponent. Если я прикрепляю StaticMeshComponent, он перестаёт реагировать на любые клавиши и двигаться, а если я прикрепляю общий MeshComponent, то для него требуется Skeletal mesh в Blueprint Editor, хотя моя модель космического корабля .fbx таковой не является.
Что я должен делать? По каким причинам StaticMesh может отказаться перемещаться?
ASpaceship::ASpaceship()
{
PrimaryActorTick.bCanEverTick = true;
// !!! These lines prevent the character from moving for some reason...
MeshComponent = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("MeshComponent"));
RootComponent = MeshComponent;





Компоненты статической сетки (UStaticMeshComponent), как и любой другой компонент, унаследованный от USceneComponent, могут двигаться и действительно перемещаются, если для их свойства Mobility установлено значение «Moveable» ( EComponentMobility::Type::Moveable).
Чтобы убедиться, что компонент сетки, который вы добавили к актеру, будет двигаться вместе с вашим актером, вам нужно убедиться в нескольких вещах:
YourMeshComponent->Mobility = EComponentMobility::Movable;YourMeshComponent->AttachToComponent(YourActor->GetRootComponent(), FAttachmentTransformRules::SnapToTargetNotIncludingScale);.Примечание: в коде замените YourActor на вашего актера, а YourMeshComponent на вашу сетку.
Теперь любые изменения в преобразовании вашего актера будут применены к сетке.