Unity實(shí)現(xiàn)虛擬搖桿效果
本文實(shí)例為大家分享了Unity實(shí)現(xiàn)虛擬搖桿效果的具體代碼,供大家參考,具體內(nèi)容如下
首先添加兩者圖片
從左到右分別是Back和Front
將Front放到Back中心
在Front身上添加腳本
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems;//導(dǎo)入命名空間 public class JoyStick : MonoBehaviour,IPointerDownHandler,IPointerUpHandler {//實(shí)現(xiàn)接口 private bool isTouched = false;//標(biāo)志位,用于標(biāo)示值是否拖拽按鈕 private static float h = 0; private static float v = 0;//這兩者用于表示水平(豎直)方向按鈕移動(dòng)的值,相當(dāng)于通過Input.GetAxis("Horizontal");Input.GetAxis("Vertical"); [SerializeField] private Vector2 joystickPivot;//按鈕中心位置在世界坐標(biāo)中的值 [SerializeField] private float radius;//按鈕的半徑(決定了按鈕的活動(dòng)范圍) // Update is called once per frame void Update () { if (isTouched) { Vector2 mouPos = Input.mousePosition; mouPos -= joystickPivot;//將鼠標(biāo)位置轉(zhuǎn)換為本地坐標(biāo) if (Vector2.Distance(mouPos,Vector2.zero)>=radius)//如果鼠標(biāo)移動(dòng)超出范圍,將圖片放到邊緣 { mouPos = mouPos.normalized*radius; } transform.localPosition = mouPos; h = mouPos.x/radius; v = mouPos.y/radius; } } public void OnPointerDown(PointerEventData eventData) { isTouched = true; } public void OnPointerUp(PointerEventData eventData) { isTouched = false; h = 0; v = 0;//不拖拽時(shí)二者為0 transform.localPosition = Vector3.zero;//讓按鈕返回中心魏智 } }
對(duì)于代碼中的h,v就是我們操作遙感時(shí)水平(豎直)方向獲取的值(0-1),其他腳本獲取這兩個(gè)靜態(tài)變量的值就可以實(shí)現(xiàn)對(duì)自身物體的移動(dòng)了。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Unity虛擬搖桿的實(shí)現(xiàn)方法
- unity實(shí)現(xiàn)虛擬搖桿控制Virtual Joystick
- unity實(shí)現(xiàn)手游虛擬搖桿
- Unity3D使用UGUI開發(fā)原生虛擬搖桿
- Unity實(shí)現(xiàn)簡(jiǎn)單虛擬搖桿
- unity實(shí)現(xiàn)手機(jī)端搖桿控制人物移動(dòng)
- Unity實(shí)現(xiàn)簡(jiǎn)單的虛擬搖桿
- Unity3D基于UGUI實(shí)現(xiàn)虛擬搖桿
- Unity實(shí)現(xiàn)簡(jiǎn)單虛擬搖桿
- Unity實(shí)現(xiàn)虛擬搖桿
- Unity UGUI通過搖桿控制角色移動(dòng)
- Unity使用ScrollRect制作搖桿
相關(guān)文章
Unity Shader實(shí)現(xiàn)水波紋效果
這篇文章主要為大家詳細(xì)介紹了Unity Shader實(shí)現(xiàn)水波紋效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05asp.net中調(diào)用oracle存儲(chǔ)過程的方法
存儲(chǔ)過程是在大型數(shù)據(jù)庫(kù)系統(tǒng)中,一組為了完成特定功能的SQL 語(yǔ)句集,存儲(chǔ)在數(shù)據(jù)庫(kù)中經(jīng)過第一次編譯后再次調(diào)用不需要再次編譯,用戶通過指定存儲(chǔ)過程的名字并給出參數(shù)來(lái)執(zhí)行它,下面給大家介紹下asp.net中調(diào)用oracle存儲(chǔ)過程的方法,需要的朋友可以參考下2015-08-08C#調(diào)用C動(dòng)態(tài)鏈接庫(kù)的實(shí)現(xiàn)
動(dòng)態(tài)鏈接庫(kù)是不能直接執(zhí)行的,也不能接收消息,它只是一個(gè)獨(dú)立的文件,本文主要介紹了C#調(diào)用C動(dòng)態(tài)鏈接庫(kù)的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01深入分析C#鍵盤勾子(Hook),屏蔽鍵盤活動(dòng)的詳解
本篇文章是對(duì)C#鍵盤勾子(Hook),屏蔽鍵盤活動(dòng)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05C#之關(guān)于Base64簡(jiǎn)單加密與解密方式
這篇文章主要介紹了C#之關(guān)于Base64簡(jiǎn)單加密與解密方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06