如何从ACharacter / APlayerController获取UCameraComponent?

时间:2019-07-18 13:10:22

标签: c++ unreal-engine4

对于UE4和C ++来说我都是新手,所以也许我的问题有点愚蠢,但是如果我的自定义AMainCharacter类继承自ACharacter,而我的自定义AMainPlayerController继承自APlayerController,我如何获得UCameraComponent?实际上,我需要的只是CameraLocation和CameraTransform。因此,仅获取CameraLocation及其FTransform也适合我,有什么建议吗?

通过我尝试浏览Unreal文档的方式,找到了APlayerCameraManager类,但是我也无法连接它。

非常感谢您的帮助

2 个答案:

答案 0 :(得分:0)

这取决于您定义相机组件的位置?是C ++还是蓝图?您在哪里附上的?我建议多学习一些有关如何使用C ++创建组件的信息。

如果您使用C ++创建并附加了Component,则您将拥有一个变量,例如PlayerCamera。

因此,我假设您已将相机组件添加到蓝图中。要访问该摄像机,您必须按类别获取actor组件并搜索所需的组件。

TArray<UCameraComponent> CameraComps;
GetComponents<UCameraComponent>(CameraComps);

现在,CameraComps 阵列可以容纳您的相机组件。

这不仅比用c ++创建组件并将其附加还要复杂。

这是一个如何做的教程。

https://docs.unrealengine.com/en-US/Programming/Tutorials/PlayerCamera/1/index.html

答案 1 :(得分:0)

稍作修正:

class ClientInfoController implements FactoryInterface
{
    public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
    {
        $clientMapper = $container->get(ClientMapper::class);

        // Orders are unnecessary
        $resultSetPrototype = $clientMapper->getTableGateway()->getResultSetPrototype();
        $resultSetPrototype->getHydrator()->detach(ClientsOrdersHydrator::class);

        return $aggregateHydrator;
    }
}

class ClientOrdersController implements FactoryInterface
{
    public function __invoke(ContainerInterface $container, $requestedName, array $options = null)
    {
        $clientMapper = $container->get(ClientMapper::class);

        // Orders are unnecessary
        $resultSetPrototype = $clientMapper->getTableGateway()->getResultSetPrototype();
        $resultSetPrototype->getHydrator()->detach(ClientsAddressHydrator::class);
        $resultSetPrototype->getHydrator()->detach(ClientsPreferencesHydrator::class);
        $resultSetPrototype->getHydrator()->detach(ClientsContactsHydrator::class);

        return $aggregateHydrator;
    }
}

这是UCameraComponent的指针数组。