91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Unity3D實現虛擬按鈕控制人物移動效果

發布時間:2020-09-20 02:48:20 來源:腳本之家 閱讀:231 作者:shenqingyu0605202324 欄目:編程語言

本文為大家分享了Unity3D實現虛擬按鈕控制人物移動的具體代碼,供大家參考,具體內容如下

創建Image的UI組件,在Image下新建一個Button按鈕。在Image 和Button上拖進Sprite圖片

Unity3D實現虛擬按鈕控制人物移動效果

在Button按鈕上掛載該腳本

using System.Collections;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
 
public class MyJoystick : MonoBehaviour, IPointerDownHandler, IPointerUpHandler {
 
 public Canvas canvas;
 public static float h;  //h和v的值傳回給player腳本,使得物體移動
 public static float v;
 
 private bool isPress = false; //Button按鈕是否按下
 private Vector2 touchPos = Vector2.zero; //按下的位置
 
 void Update() {
  if (isPress)
  {
   RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas.transform as RectTransform,
    Input.mousePosition, null, out touchPos);
 
   //根據Canvas和Image的Rectransform位置相減得出
   touchPos += new Vector2(427, 299); 
 
   float distance = Vector2.Distance(Vector2.zero, touchPos);
 
   if (distance > 52) { //限制Button不能超出Image位置(兩者位置相減得出52)
    touchPos = touchPos.normalized*52;
    transform.localPosition = touchPos;
   }
   else
   {
    transform.localPosition = touchPos;
   }
 
   h = touchPos.x / 52;
   v = touchPos.y / 52;
  }
 
 }
 
 //鼠標按下時觸發
 public void OnPointerDown(PointerEventData eventData) {
  isPress = true;
 }
 
 //鼠標按鍵彈起時觸發
 public void OnPointerUp(PointerEventData eventData)
 {
  isPress = false;
  transform.localPosition = Vector3.zero;
 }
 
}

在玩家身上掛載控制玩家移動的腳本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class PlayerMove : MonoBehaviour {
 
 public float speed = 0.1f;
 
 private float h = 0;
 private float v = 0;
 
 void Update() {
  //首先檢測虛擬按鍵有沒有移動,沒有再選擇鍵盤輸入
  if (Mathf.Abs(MyJoystick.h) > 0 || Mathf.Abs(MyJoystick.v) > 0) {
   h = MyJoystick.h;
   v = MyJoystick.v;
  }
  else{
   h = Input.GetAxis("Horizontal");
   v = Input.GetAxis("Vertical");
  }
  //玩家位置移動
  if (Mathf.Abs(h) > 0.1 || Mathf.Abs(v) > 0.1) {
   Vector3 targetDir = new Vector3(h, 0, v);
   transform.position += targetDir * speed;
 
   transform.LookAt(transform.position+targetDir);
  }
  
 }
}

這樣,就能通過按下Button來控制玩家移動了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

锡林郭勒盟| 正宁县| 惠来县| 得荣县| 河北区| 湾仔区| 中阳县| 礼泉县| 泰顺县| 射洪县| 任丘市| 宜城市| 田林县| 疏附县| 秦皇岛市| 安达市| 西充县| 汕尾市| 永德县| 三穗县| 绵竹市| 合山市| 南丹县| 石狮市| 获嘉县| 嘉定区| 柏乡县| 张家川| 文成县| 图们市| 左云县| 望谟县| 凤城市| 贵南县| 广饶县| 张家口市| 渝北区| 沈阳市| 临沭县| 皮山县| 和顺县|