@Cramon

Как ограничить оси передвижения физического объекта, у которого корневым объектом является SphereComponent?

Имеется класс PlayerBall наследованный от Pawn с такими компонентами

//...

private:
//components
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Components", meta = (AllowPrivateAccess = "true"))
UStaticMeshComponent* BallBaseMesh;

UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Components", meta = (AllowPrivateAccess = "true"))
USphereComponent* BallHitSphere;

UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Components", meta = (AllowPrivateAccess = "true"))
USpringArmComponent* BallSpringArm;

UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Components", meta = (AllowPrivateAccess = "true"))
UCameraComponent* BallCamera;

//functions
void LeftRightMovement(float Value);

//...

В Конструкторе класса прописаны привязанности

APlayerBall::APlayerBall()
{
 	// Set this pawn to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;

	BallHitSphere = CreateDefaultSubobject<USphereComponent>(TEXT("BallHitSphere"));
	RootComponent = BallHitSphere;

	BallBaseMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("BallBaseMesh"));
	BallBaseMesh->SetupAttachment(RootComponent);

	BallSpringArm = CreateDefaultSubobject<USpringArmComponent>(TEXT("BallSpringArm"));
	BallSpringArm->SetupAttachment(RootComponent);

	BallCamera = CreateDefaultSubobject<UCameraComponent>(TEXT("BallCamera"));
	BallCamera->SetupAttachment(BallSpringArm);

}

И есть блупринт, который наследует от этого класса

614f67715b392040411181.png
Я пытаюсь дать этому мячику физику для движения вверх вниз, включив физику и запретив движение по координатам x, y. Но столкнулся с небольшой проблемой:
При попытке симулировать физику на SphereComponent, физика работает правильно, но ограничения на шар не применяются и он просто падает.

614f68e645292041624477.png
614f6930e3b71310520168.png
А при попытке симулировать физику на StaticMesh шар ведёт себя именно так, как я и хотел, но он просто "отваливается" от остальных компонентов.

614f6a2d59e74426524392.png
Очень хотелось бы понять почему при симуляции на SphereComponent не работают ограничители и почему шар "вываливается" из SphereComponent при симуляции на StaticMesh (если объяснение займёт много времени, то и ссылки на конкретную документацию достаточно, я на этом этапе просто не уверен куда даже там смотреть). Можно ли решить мою проблему в лоб или проще реализовать класс по другому?

UPD: Пользователь Quark направил меня в нужном направлении, проблема решилась тем, что корневым компонентом нужно было сделать StaticMesh, вместо SphereComponent. Но вопрос всё ещё стоит. Что если будет необходимо оставить SphereComponent как корневой компонент. Хорошая ли эта практика использовать StaticMesh как корневой компонент Pawn'a?
  • Вопрос задан
  • 137 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы