新規プロジェクトを作る際にc++のサードパーソンで初めた際にいるキャラクターなのですが、クリック入力での動作をさせることができません。左右クリックを押すとジャンプをするのですが、どうやらタッチ動作に割り当てられているようです。
// Input
void ABatteryCollectorCharacter::SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent)
{
// handle touch devices
PlayerInputComponent->BindTouch(IE_Pressed, this, &ABatteryCollectorCharacter::TouchStarted);
PlayerInputComponent->BindTouch(IE_Released, this, &ABatteryCollectorCharacter::TouchStopped);
}
void ABatteryCollectorCharacter::TouchStarted(ETouchIndex::Type FingerIndex, FVector Location)
{
Jump();
}
void ABatteryCollectorCharacter::TouchStopped(ETouchIndex::Type FingerIndex, FVector Location)
{
StopJumping();
}
試しにこれらをコメントアウトしてみたのですが、クリックの入力は取得できないままでした。クリック中はマウスによるカメラ操作(APawn::AddControllerYawInput等)も出来ないようでした。プロジェクト設定のインプットにて、左右クリックに割り当てたボタンを他のものに変えると正常に動作します。
カメラに干渉することなく、左右クリックを使うにはどうしたら良いのでしょうか。ご教示のほど宜しくお願いします。(右クリックで銃を構えて、左クリックで発砲したいと考えています)
UE4.15.2にてC++のThird Person Templateを作成し実行してみましたが、左クリックでのジャンプ、カメラ操作も問題なく動作しています。
貼られているコードを見たところタッチ動作を定義する Bind Touch はありますが、クリックやボタン押下時の Bind Action、スティック動作時の Bind Axis が無いので
PlayerInputComponent->BindAction("Jump", IE_Pressed, this, &ACharacter::Jump);
PlayerInputComponent->BindAction("Jump", IE_Released, this, &ACharacter::StopJumping);
PlayerInputComponent->BindAxis("Turn", this, &APawn::AddControllerYawInput);
PlayerInputComponent->BindAxis("LookUp", this, &APawn::AddControllerPitchInput);
上記のコードをSetupPlayerInputComponent関数内に追加してあげれば動作すると思われます。
この時Project SettingsのInputも以下のように設定しています。
回答ありがとうございます。質問の意図が分かりづらくて申し訳ありません。そのプリセットの状態を改変して、左右クリックに別な動作を割り当てると、正常に動作しますでしょうか?
BindTouch以外のコードは、本質問と無関係かと思い省いていました。貼っていただいたコードは私のコード内にもあります。
このように設定してみました
Project Settings - Input
新たに2つのAction Mappingを追加し、それぞれ左クリック右クリックを設定。
ヘッダファイル
左クリック、右クリック押下時のイベント関数を追加
CPPファイル
BindActionでAction Mappingで追加した動作とイベント関数を割り当て
左クリック、右クリック押下時のイベント定義(Output Logウィンドウにログ表示するように)
左クリック、右クリック押下時のログ表示
上記のように設定しても思うような動作をしないのであれば、お手数ではありますが不具合を再現したプロジェクトデータをアップしていただければ、具体的な解決案が出せると思います。
丁寧な回答ありがとうございます。
Project Settings - Inputにマウスをタッチ操作に割り当てるかの項目があり、このチェックを外したところクリック操作を取得できるようになりました。カメラの操作については別要因のようです。
検証してくださり大変ありがとうございました。
自分は的はずれな回答をしてしまっていたようです。大変申し訳ありません。
ですが、解決されたようで何よりです!