私はできるだけシンプルにするために、もう一度編集しています。私はOculusのタッチコントローラーが接続されているかどうかを検出するために私のゲームで(非現実のエンジン4で作られた)能力を持ちたいと思っています。あなたが私が今までに何をしたかを見つけることができます。どのようにOculusタッチコントローラのプラグインの挿入/削除を検出できますか?
私はこれまで何をしたかまず第一に: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で、この追加しました:MyGameModeで最後に
virtual bool IsControllerConnected(int32 ControllerIndex)const
{
return false;
}
を私が追加しましたこの:
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関数が呼び出されてメインターゲットを返します。
今何が間違っている:
MotionControllerポインタは常にnullptrしているようです。私はそれを動作させる方法を知らない。
質問を編集して[これまでのコード](http://whathaveyoutried.com)を表示してください。問題を抱えているコードのアウトライン(ただし、好ましくは[mcve])を含める必要があります。次に、特定の問題を解決することができます。 [ask]も読んでください。 –
私はこの問題でいくつかの進歩を遂げたのでコメントしています:) –
私が書いた** minimal **と** complete **という言葉を誤解していると思います。 –