1. 程式人生 > 程式設計 >Unity實現虛擬搖桿效果

Unity實現虛擬搖桿效果

本文例項為大家分享了Unity實現虛擬搖桿效果的具體程式碼,供大家參考,具體內容如下

首先新增兩者圖片

Unity實現虛擬搖桿效果

從左到右分別是Back和Front

Unity實現虛擬搖桿效果

將Front放到Back中心
在Front身上新增指令碼

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;//匯入名稱空間

public class JoyStick : MonoBehaviour,IPointerDownHandler,IPointerUpHandler {//實現介面

 private bool isTouched = false;//標誌位,用於標示值是否拖拽按鈕
 private static float h = 0;
 private static float v = 0;//這兩者用於表示水平(豎直)方向按鈕移動的值,相當於通過Input.GetAxis("Horizontal");Input.GetAxis("Vertical");
 [SerializeField] private Vector2 joystickPivot;//按鈕中心位置在世界座標中的值
 [SerializeField] private float radius;//按鈕的半徑(決定了按鈕的活動範圍)

 // Update is called once per frame
 void Update () {
 if (isTouched)
 {
  Vector2 mouPos = Input.mousePosition;
  mouPos -= joystickPivot;//將滑鼠位置轉換為本地座標
  if (Vector2.Distance(mouPos,Vector2.zero)>=radius)//如果滑鼠移動超出範圍,將圖片放到邊緣
  {
  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),其他指令碼獲取這兩個靜態變數的值就可以實現對自身物體的移動了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。