最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2019年02月22日 15:52:27   作者:shenqingyu0605202324  
這篇文章主要為大家詳細介紹了Unity3D實現虛擬按鈕控制人物移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

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

在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;
  }
 
 }
 
 //鼠標按下時觸發(fā)
 public void OnPointerDown(PointerEventData eventData) {
  isPress = true;
 }
 
 //鼠標按鍵彈起時觸發(fā)
 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來控制玩家移動了。

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

相關文章

  • 淺談C# 抽象類與開閉原則

    淺談C# 抽象類與開閉原則

    這篇文章主要介紹了C# 抽象類與開閉原則的的相關資料,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-06-06
  • C#集合之可觀察集合的用法

    C#集合之可觀察集合的用法

    這篇文章介紹了C#集合之可觀察集合的用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • c#實現攝像頭拍照功能示例

    c#實現攝像頭拍照功能示例

    這篇文章主要介紹了c#實現攝像頭拍照功能示例,需要的朋友可以參考下
    2014-04-04
  • C#使用有道ip地址查詢接口方法實例詳解

    C#使用有道ip地址查詢接口方法實例詳解

    這篇文章主要介紹了C#使用有道ip地址查詢接口方法,實例分析了有道IP地址查詢接口的使用方法與數據返回格式,需要的朋友可以參考下
    2015-05-05
  • 如何使用VS中的快捷鍵快速格式化代碼使好看,整齊

    如何使用VS中的快捷鍵快速格式化代碼使好看,整齊

    這篇文章主要介紹了如何使用VS中的快捷鍵快速格式化代碼使好看,整齊,非常不錯具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • 詳解WPF如何顯示具有層級關系的數據

    詳解WPF如何顯示具有層級關系的數據

    這篇文章主要為大家詳細介紹了在WPF中如何顯示具有層級關系的數據,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-04-04
  • C#9新特性init only setter的使用

    C#9新特性init only setter的使用

    這篇文章主要介紹了C#9新特性init only setter的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • C#調用C++使用C++/CLI的實現

    C#調用C++使用C++/CLI的實現

    在C#開發(fā)過程中,我們可能會遇到需要調用Windows API 或是第三方庫的場景,本文主要介紹了C#調用C++使用C++/CLI的實現,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • C#操作字符串方法總結實例代碼

    C#操作字符串方法總結實例代碼

    這篇文章主要介紹了C#操作字符串方法總結實例代碼,需要的朋友可以參考下
    2017-10-10
  • C#異步編程由淺入深(三)之詳解Awaiter

    C#異步編程由淺入深(三)之詳解Awaiter

    這篇文章主要介紹了C#異步編程由淺入深(三)之詳解Awaiter,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03

最新評論

治县。| 汝州市| 宜阳县| 泸溪县| 孙吴县| 玉田县| 高邮市| 宁陵县| 大冶市| 怀仁县| 林西县| 通河县| 普陀区| 石首市| 三都| 玉屏| 涟源市| 全州县| 荔波县| 灵丘县| 冕宁县| 山西省| 家居| 静宁县| 荆州市| 含山县| 遂宁市| 邯郸市| 大田县| 赫章县| 安庆市| 翁牛特旗| 来安县| 德兴市| 小金县| 石嘴山市| 鹤峰县| 青州市| 曲阳县| 桐柏县| 长白|