gpt4 book ai didi

c++ - 如何检测插入/插入Oculus触摸 Controller ?

转载 作者:行者123 更新时间:2023-12-01 14:59:18 28 4
gpt4 key购买 nike

我再次对其进行编辑,以使其尽可能简单。我想在我的游戏(由虚幻引擎4制造)中具有检测Oculus触摸 Controller 是否已插入的功能。在下面您可以找到我到目前为止所做的事情。

首先,到目前为止,我所做的是:
在OculusInput.cpp中

  bool FOculusInput::IsControllerConnected(int32 ControllerIndex) const
{
for (const FOculusTouchControllerPair& ControllerPair : ControllerPairs)
{
if (ControllerPair.UnrealControllerIndex == ControllerIndex)
{
const FOculusTouchControllerState& ControllerState = ControllerPair.ControllerStates[(int32)EControllerHand::Left];

if (ControllerState.bIsConnected)
{
return true;
}
return false;
}
return false;
}
return false;
}

然后,我在IMotionController.h中添加了它:
virtual bool IsControllerConnected(int32 ControllerIndex)const
{
return false;
}

最后,在MyGameMode中,我添加了以下内容:
UFUNCTION(BlueprintCallable, Category = "Controller")
bool IsTouchConnected(int32 ControllerIndex);

TSharedPtr<IMotionController> MotionController;

和.cpp中
bool AMyGameMode::IsTouchConnected(int32 ControllerIndex)
{

if (!MotionController.IsValid())
{
MotionController.Get(); //this doesn't work
}

if (MotionController.IsValid())
{
return MotionController->IsControllerConnected(ControllerIndex);
}
return false;
}

所以这是应该如何工作的:
1.我正在调用函数AMyGameMode::IsTouchConnected();
2.然后通过MotionController指针调用IMotionController::IsControllerConnected。
3.然后由于在OculusInput中被覆盖,Oculus Function被调用并返回我的主要目标。

现在出了什么问题:

MotionController指针似乎始终为nullptr。我不知道如何使它工作。

最佳答案

所以我终于做到了,所以我想把它发布在这里给任何搜索它的人。

首先,您要添加到IMotionController新功能:

virtual bool IsControllerConnected(int32 ControllerIndex)const
{
return false;
}

然后您转到OculusInput并添加以下内容:

。H
virtual bool IsControllerConnected(int32 ControllerIndex)const override;

.cpp
bool FOculusInput::IsControllerConnected(int32 ControllerIndex) const
{
for (const FOculusTouchControllerPair& ControllerPair : ControllerPairs)
{
if (ControllerPair.UnrealControllerIndex == ControllerIndex)
{
const FOculusTouchControllerState& ControllerState = ControllerPair.ControllerStates[(int32)EControllerHand::Left];

if (ControllerState.bIsConnected)
{
return true;
}
return false;
}
return false;
}
return false;
}

最后,在您的类(class)中添加以下内容:

。H
#include "MotionControllerComponent.h"


UFUNCTION(BlueprintCallable, Category = "Controller")
bool IsTouchConnected(int32 ControllerIndex);


TSharedPtr<class UMotionControllerComponent> MCComponent;

.cpp
bool YourClass::IsTouchConnected(int32 ControllerIndex)
{
TArray<IMotionController*> controllers = IModularFeatures::Get().GetModularFeatureImplementations<IMotionController>(IMotionController::GetModularFeatureName());

for (IMotionController* MotionController : controllers)
{
return MotionController->IsControllerConnected(ControllerIndex);
}
return false;
}

使用此代码,我可以成功检查我的触摸 Controller (在这种情况下为左侧)是否已连接:)希望我可以帮助任何人!

关于c++ - 如何检测插入/插入Oculus触摸 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45959134/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com