Unity3D中使用Joystick Pack實現搖杆控制

2021-02-15 微卡智享
花了幾個小時重新根據Unity3D的初學者教程做了一個簡單的Demo,做完後確實對新人來說是個比較不錯的學習項目,項目中控制人物移動是用的鍵盤的方向鍵,就想如果在手機平臺的話,實現搖杆控制方向,類似於王者榮耀那樣的效果,所以就順便學習了Joystick Pack組件。今天這篇就是介紹Joystick Pack的簡單使用。




上面的視頻就是用了Joystick Pack後實現的移動效果,鍵盤和搖杆可以同時操作,邏輯是一樣的。Joystick Pack虛擬操縱杆在Unity的資源商店中可以直接獲取,是完全的免費資源,可以直接在Unity3D資源商店中直接獲取。


視頻中的遊戲項目就是在Unity Hub學習目錄下的John Lemon`s Haunted Jaunt:3D Beginner。

在Learn.unity.com中找到這個項目後,跟著教程一步一步的創建和操作完成的。

建議初學者都可以都用這個試一下,做完後對整個項目會有一個簡單的了解。接下來就是我們這篇的重點了,主要講Joystick Pack的使用。



首先要在文章開始的Unity3d的資源商店中把Joystick Pack已經添加到我的資源中。

然後在項目的窗口---包管理器--My Assiets中找到Joystick Pack,把這個包下載並導入。

導入後Assets中就會出現Joystick Pack的文件夾了。

在我們的Canvas的2D面板中創建一個空物體,改名為Operator(代表控制),然後將右邊Joystick Pack--Prefabs--Variable Joystick的預製件拖入到Operator下,另一個btnFinish是一個操作按鈕,用於運行中點擊退出遊戲用的,所以這裡可以忽略。

然後點擊Variable Joystick在右邊的檢查器中調整位置及布局,這個可以自己設置位置和大小。
到這裡,布局就完成了,接下來就是怎麼實現搖杆控制人物移動。

點擊人物後,可以看到右邊的檢查器中綁定的Player Movement的腳本,這個腳本就是控制人物移動的,雙擊這個腳本後我們開始進行代碼編輯。

增加一個VariableJoystick,屬性的public,這樣可以外部賦值。

然後在FixedUpdate()的方法裡,添加上面的兩行代碼,這裡說明一下,horizontal是水平移動的值,vertical是垂直移動的值,原代碼中通過Input.GetAxis的方法獲取到鍵盤移動的值,我們這裡的原理是:當判斷horizontal和vertical的值為0時,說明沒有按鍵盤的方向鍵,這時我們再獲取Variable Joystick對應的horizontal和vertical的值。這樣就可以保證鍵盤和搖杆都可以操作,當然鍵盤的優先級更後,當按下鍵盤方向時,同時操作搖杆是不起作用的。
using System.Collections;using System.Collections.Generic;using UnityEngine;
public class PlayerMovement : MonoBehaviour{ public float turnSpeed = 20f;
public VariableJoystick variableJoystick;
Vector3 m_Movement; Quaternion m_Rotation = Quaternion.identity; Animator m_Animator;
Rigidbody m_Rigidbody; AudioSource m_AudioSource;

void Start() { m_Animator = GetComponent<Animator>(); m_Rigidbody = GetComponent<Rigidbody>(); m_AudioSource = GetComponent<AudioSource>(); }
void FixedUpdate() { float horizontal = Input.GetAxis("Horizontal"); float vertical = Input.GetAxis("Vertical");
horizontal = horizontal == 0 ? variableJoystick.Horizontal : horizontal; vertical = vertical == 0 ? variableJoystick.Vertical : vertical;

m_Movement.Set(horizontal, 0f, vertical); m_Movement.Normalize();
bool hasHorizontalInput = !Mathf.Approximately(horizontal, 0f); bool hasVerticalINput = !Mathf.Approximately(vertical, 0f);
bool isWalking = hasHorizontalInput || hasVerticalINput;
m_Animator.SetBool("IsWalking", isWalking); if (isWalking) { if (!m_AudioSource.isPlaying) { m_AudioSource.Play(); } } else { m_AudioSource.Stop(); }
Vector3 desiredForward = Vector3.RotateTowards(transform.forward, m_Movement, turnSpeed * Time.deltaTime, 0f);
m_Rotation = Quaternion.LookRotation(desiredForward); }

void OnAnimatorMove() { m_Rigidbody.MovePosition(m_Rigidbody.position + m_Movement * m_Animator.deltaPosition.magnitude);
m_Rigidbody.MoveRotation(m_Rotation); }}

完成上面的代碼後,我們把腳本保存,這樣上面創建的Variable Joystick就會顯示在PlayerMovement的檢查器中了。

將Variable Joystick的組件拖到右下角Player Movement中定義的Variable Joystick中就實現綁定。
完成上面的步驟後,Joystick Pack搖杆控制就簡單的實現了。



相關焦點

  • 用Vue實現一個街機遊戲搖杆
    前言最早實現這個效果,是2011年用Objective-C在iOS裡實現的。印象裡我在不同時期曾經用三種語言分別實現過這個案例。所以無論用什麼框架、語言,只要你了解背後的原理,都很容易實現。三層UI全部UI分為三層第三層是底,只是放在畫面中,為了讓視覺感受更完整。
  • 民航飛行控制系統---Saitek Yoke搖杆上市
    元月24日Saitek賽鈦客旗下Yoke民航搖杆正式上市,此款搖杆是目前國內最專業的民航客機飛行軟體的模擬控制系統。Yoke專業模擬飛行控制系統是Saitek賽鈦客集成了多年的模擬飛行設備開發經驗後的又一款經典力作。
  • FPS遊戲的Joystick操縱杆如何實現?
    2.將目標手機連接到電腦,並在Unity中做如下操作:Edit-Project Settings-Edit-Device下選擇Any Android Device(我這裡是使用Android測試)。區域通過MovementRange參數來控制。 這種操縱杆方便支持那些僅需要「左右」或是「上下」移動的操作,但我們常見的操縱杆是限定在圓的範圍內,這也是大多數遊戲採用的操縱杆方式,所以我們需要對Joystick腳本進行擴展,在實現基於圓的範圍之前,先看一下,原有限定在矩形範圍內的實現,在JoyStick.cs下:
  • 王者榮耀搖杆怎麼用 走位神器吸盤搖杆使用技巧
    導 讀 王者榮耀吸盤搖杆怎麼用?王者榮耀吸盤搖杆是什麼?
  • cocoscreator 虛擬搖杆控制 目標移動(A版)
    搖杆挺有意思 於是  想自己實現類似的功能->效果圖:總體思路:搖杆在規定範圍內 活動,受控制目標 通過監聽 控制點(搖杆)的方位,然後調整自身的角度和位置。首先要考慮幾個問題1,控制點的活動區域2,受控制較色的角度要跟控制點的角度一致3,受控角色如何監聽控制器角度變化和位置變化4,控制較色速度實操:1,控制點的活動區域 在移動事件中,只要計算  控制點與 控制底圖的 半徑差(限制範圍半徑
  • 《王者榮耀》安琪拉使用大招時期間移動左邊搖杆可以實現哪種效果
    導 讀 安琪拉使用大招時期間,移動左邊搖杆可以實現哪種效果?
  • 農藥迷們看過來,Vue居然能夠實現遊戲搖杆
    當然沒有第二層和第三層是不影響搖杆功能的,但誰叫我是一個擬物流的前端偏執狂呢?就可以達到控制拖動在圓形區域內的效果了。,同時根據搖杆的位置旋轉角度。現在搖杆UE基本就完成了,接下來我們要輸出一些數值,畢竟搖杆不能光自己搖,得用來控制其他的元素進行運動。 0
  • unity3d遊戲引擎開發的遊戲都有哪些?
    Unity3d是目前主流的遊戲開發引擎,它提供了一個整合的編輯器、跨平臺發布、地形編輯、著色器,腳本,網絡,物理,版本控制等特性。Unity3d可以開發桌面版、web版、手機版的遊戲,是一個非常理想的三維遊戲開發平臺。
  • Unity3d遊戲程序開發培訓靠譜嗎?好就業嗎?
    Unity是目前最主流的遊戲開發引擎之一,還有一個就是UE4遊戲開發引擎,但據數據顯示,全球最賺錢的1000款手機遊戲中,有30%都是使用Unity的工具開發出來的。特別是在VR設備中,90%以上的遊戲都是使用Unity引擎開發,這足以證明Unity的遊戲開發引擎更加具有統治地位。Unity的遊戲開發引擎如此受歡迎,而市場上Unity3d的遊戲程序開發者卻供不應求,這就吸引了一大批遊戲愛好者想學習Unity3d遊戲程序開發,甚至未來想轉行Unity3d遊戲程序開發。
  • 戰爭雷霆搖杆外設介紹 搖杆外設推薦
    戰爭雷霆搖杆外設介紹,搖杆外設推薦,今天小編給大家帶來的是遊戲全真模式推薦使用的搖杆設備介紹,一起來看看!  趁著這次歷史全真比賽和THRUSTMASTER與戰爭雷霆在ChinaJoy上的合作活動,和大家聊一聊在cj上看到的戰爭雷霆搖杆外設,讓各位早日拜託苦逼的鍵鼠全真,加入搖杆大軍。
  • unity3D中的C#編程入門
    不要使用命名空間目前Unity暫不支持命名空間.或許未來版本會有.6. Only member variables are serialized and are shown in the Inspector.只有序列化的成員變量才能顯示在檢視面板私有和保護變量只能在專家模式中顯示.屬性不被序列化或顯示在檢視面板.
  • 賽鈦客YOKE搖杆試用
    油門設計為三軸控制杆,拉動的手感非常好,並且三個調節杆拉倒低會觸動Reverse按鈕,形成發動機反推等功能,非常真實。不過這個油門控制器的做工方面相比搖杆部分稍差了一些。踏板底部和側面    踏板中間設計了一個圓形調節閥,用來控制兩個腳踏板的力度,因此我們可以很方便的找到自己適合的感覺。踏板底部設計有多個防滑橡膠墊,足以適應任何地面上的使用。
  • NBA2K21搖杆投籃怎麼用?快速掌握搖杆投籃技巧
    《NBA2K21》相比於前作,在搖杆投籃上作出了不小的改動,增加了投籃條的設定,操作難度增加了不少。接下來就由Golink免費加速器給各位玩家們分享一下《NBA2K21》怎麼快速掌握搖杆投籃吧:在本作遊戲內,搖杆投籃難度可以說加大了很多,不過如果練好了投籃會更準,就算被人幹擾了命中率也可以大大增加。操作方法就是推搖杆的時候,會出現黃區以及光標,之後我們通過移動搖杆的方式使得光標移動至黃區範圍內,此時投籃基本就進了。
  • 現在你玩街機遊戲,一般使用搖杆、手柄、鍵盤、還是手機呢?
    當年我們在遊戲廳玩《街頭霸王2》的時候,玩家們別無選擇的使用了搖杆。因此認為搖杆才是最好用的設備。不過那時候玩家們的技術,真心的菜,就連反升龍拳都搖不出來。但是使用搖杆卻是最有感覺的。於是在網上買了一些專業的搖杆,別說還真能找回當年的一些感覺,看來我們這批街機玩家內心深處的期待還得是搖杆。現在遊戲平臺的大神們一般都是使用的什麼遊戲設備呢?一般玩家使用的都是鍵盤、搖杆、手機和手柄,其中鍵盤是最多的因為最方便,除非是非常專業的玩家或者是對搖杆情有獨鐘的玩家,要不然遊戲平臺大部分玩家都是鍵盤黨。
  • 《荒野亂鬥》搖杆怎麼固定 搖杆固定方法教學
    導 讀 荒野亂鬥搖杆怎麼固定,遊戲中的操作是用搖杆操作,細心的玩家也是發現這個不是固定,有很多的小夥伴也是不太習慣
  • 萊仕達PXN-00081街機遊戲搖杆怎麼樣?使用評測
    產品外觀造型非常的經典,圓形的手柄,金屬搖杆,和20年前的街機搖杆一模一樣。仿街機人體工程學設計,小八方向搖杆+8個動作大按鍵,與遊戲中的角色合為一體,搓招發招一氣呵成!大搖杆不但支持搖杆和方向鍵互換功能,還支持不同類型遊戲要求。外觀精緻耐用,搖杆靈敏,和童年街機廳一樣的手感,非常值得一試!
  • 一個算法讓機器人依靠觸覺實現多個控制任務
    這個任務是很困難的,因為粗糙的控制往往會對球軸承施加過大的力,導致其滑動從而遠離了傳感器。 模擬搖杆偏轉任務:在玩電子遊戲時,我們經常只依靠觸覺來操縱遊戲控制器上的模擬搖杆。這個任務特別令人感興趣,因為偏轉模擬搖杆通常需要有意斷開和返回接觸,從而創建一個部分可觀測性情況。 模具滾動任務:在這個任務中,機器人將一個 20 面模具從一個面滾到另一個面。
  • 知識點篇之曲柄搖杆機構
    當然,這個釋義有些官方,總覺得讀起來有些拗口。低副中有間隙,數目較多的低副累積會引起運動累積誤差。曲柄機構的作用是實現圓周運動與直線運動的相互轉換的平面連杆機構,常見的曲柄機構機構包括曲柄搖杆機構和曲柄滑塊機構。很多時候我們在講解知識點的時候會把曲柄搖杆機構的知識點說成連杆機構,其實這話也沒毛病。因為曲柄機構(曲柄搖杆機構和曲柄滑塊機構)都屬於特殊的連杆機構,是連杆機構中的平面四連杆機構。
  • 模擬飛行搖杆推薦:圖馬思特T16000飛行搖杆怎麼樣
    專業的空乘人員對身體的各項要求非常高,對與決大部分普通人來說都是遙不可及的,但如果想體驗飛行駕駛感,圖馬思特T16000這款飛行搖杆還是可以很好的幫你實現。而且包裝非常認真,本身的包裝外另外套封了兩層紙箱,比較美中不足的是拆開本體包裝裡面沒有固定用的泡沫板或者是其他防護防震包裝,雖然收到的物品沒有損壞,但還是感覺會有風險在,而且也沒有看到現在常會配置的接口防護,USB連接接口是直接暴露在外的。 外觀好不好看純粹是個人主觀決定,就我個人來說還是覺得非常棒的,黑色磨砂感跟橙黃色搭配相得益彰,沉穩不沉悶,整體還是非常有質感的。
  • 國產推出支持體感的手柄:1680萬種燈效,搖杆也能拆卸更換
    搖杆方面,其依然採用的是日本進口ALPS搖杆,並且還依靠POM片和金屬鋼圈來雙重降低摩擦力,和我以前用的遊戲手柄相比,我感覺其控制感會更加細膩,就像德芙巧克力般眾享絲滑,且回彈的力度適中,搖杆鍵帽再使用了軟膠TPE材質,觸感舒服,操控感不錯。