【UE4】Virtual Joystick 用藍圖解決兩個手指觸屏衝突問題

  在 UE4 中製作手機遊戲(比如第三人稱3D遊戲,就像喫雞手遊)時,會需要對角色進行移動和視角的控制。UE4 中提供了默認的 Virtual Joystick 也就是虛擬搖桿。在引擎中 “Edit” 下的 “Project Settings…”“Input” 裏的 “Default Touch Interface” 中可以選擇(也可以直接搜 “Touch”)。
  默認情況,引擎文件夾是不顯示的,也沒法搜到引擎文件中的內容。需要在 “View Options” 中將 “Show Engine Content” 勾選上便可以看到。

  引擎自帶兩種虛擬搖桿,一種是 Default 的,左手控制方向,右手控制視角;另一種是 Left Only,只有左手控制方向的搖桿。實際上使用過程中,發現 Default 的右手控制方向搖桿非常非常非常非常難用。所以建議使用 Left Only,或者不使用,純自己寫角色移動和視角變換的代碼或藍圖。

  我使用的是 Left Only,因爲左手的角色移動還是很順暢好用的。然後寫了一個接受 Touch 的藍圖,進行右手控制視角的操作。但是在實際過程中發現,如果用的是 touch1 的話,只有右手按住,拖動,視角可以正常變化;右手按住,左手拖動搖桿,右手依然可以正常變化視角;但是!當左手先拖動搖桿並不鬆手,右手再點擊屏幕,不會響應

  這時需要使用 touch2 來解決兩個手指觸屏的問題。需要接受屏幕點擊,並且存儲,再手指 Move 的時候進行視角的變化。需要在角色的 BP 中添加兩個變量,PreviousTouchLocation 用來記錄第一次點擊時的位置,NewTouchLoaction 用來記錄手指 Move 時的實時位置。
  使用 "InputTouch" Event,藍圖如下:

  這樣當只有右手先點擊並拖動時,走的是 Touch1 的部分(右手按住的期間左手拖動左搖桿,右手就算擡起了,下次右手點擊依然是 Touch1 的邏輯);當左手先拖動搖桿了,右手再點擊屏幕,走的是 Touch2 的邏輯,所以怎麼樣都是對的。
  Touch1 部分邏輯:

  Touch2 部分邏輯和 Touch1 只有 Touch Index 從 1 變成了 2,就沒有區別了。

  從輸出也可以看出調用的邏輯。也可以通過 Viewport Size 來限制右手手指可觸碰的區域。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章