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)于通過Input.GetAxis("Horizontal");Input.GetAxis("Vertical");
[SerializeField] private Vector2 joystickPivot;//按鈕中心位置在世界坐標(biāo)中的值
[SerializeField] private float radius;//按鈕的半徑(決定了按鈕的活動范圍)
// 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)移動超出范圍,將圖片放到邊緣
{
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;//不拖拽時二者為0
transform.localPosition = Vector3.zero;//讓按鈕返回中心魏智
}
}
對于代碼中的h,v就是我們操作遙感時水平(豎直)方向獲取的值(0-1),其他腳本獲取這兩個靜態(tài)變量的值就可以實(shí)現(xiàn)對自身物體的移動了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Unity虛擬搖桿的實(shí)現(xiàn)方法
- unity實(shí)現(xiàn)虛擬搖桿控制Virtual Joystick
- unity實(shí)現(xiàn)手游虛擬搖桿
- Unity3D使用UGUI開發(fā)原生虛擬搖桿
- Unity實(shí)現(xiàn)簡單虛擬搖桿
- unity實(shí)現(xiàn)手機(jī)端搖桿控制人物移動
- Unity實(shí)現(xiàn)簡單的虛擬搖桿
- Unity3D基于UGUI實(shí)現(xiàn)虛擬搖桿
- Unity實(shí)現(xiàn)簡單虛擬搖桿
- Unity實(shí)現(xiàn)虛擬搖桿
- Unity UGUI通過搖桿控制角色移動
- Unity使用ScrollRect制作搖桿
相關(guān)文章
C# datagrid非常規(guī)方法實(shí)現(xiàn)添加合并列
這篇文章主要介紹了C# datagrid非常規(guī)方法實(shí)現(xiàn)添加合并列,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11
C#如何實(shí)現(xiàn)子進(jìn)程跟隨主進(jìn)程關(guān)閉
多進(jìn)程開發(fā)經(jīng)常會遇到主進(jìn)程關(guān)閉,子進(jìn)程需要跟隨主進(jìn)程一同關(guān)閉,比如調(diào)ffmpeg命令行實(shí)現(xiàn)的錄屏程序等,下面我們就來看看C#是如何實(shí)現(xiàn)子進(jìn)程跟隨主進(jìn)程關(guān)閉的吧2024-04-04
DevExpress獲取節(jié)點(diǎn)下可視區(qū)域子節(jié)點(diǎn)集合的實(shí)現(xiàn)方法
這篇文章主要介紹了DevExpress獲取節(jié)點(diǎn)下可視區(qū)域子節(jié)點(diǎn)集合的實(shí)現(xiàn)方法,是C#程序設(shè)計中較為常見的技巧,需要的朋友可以參考下2014-08-08
漢字轉(zhuǎn)拼音軟件制件示例(漢字轉(zhuǎn)字母)
這篇文章主要介紹了c#漢字轉(zhuǎn)拼音的方法,但不能判斷多音字,大家可以參考修改使用2014-01-01

