1. 程式人生 > >Unity3d使用UGUI開發原生虛擬搖桿

Unity3d使用UGUI開發原生虛擬搖桿

在Unity3d中開發虛擬搖桿方式有比較多,可以使用EasyTouch、FairyGUI等外掛來開發。本文給大家介紹使用Unity3d的原生UGUI來開發出自己的虛擬搖桿,這樣可以減少遊戲資源包的大小。

先展示下效果圖:


現在開發我們的開發

建立一個Image1,並且在Image1建立一個子物件Image2

在Image1中掛載一個自定義指令碼,這裡我命名為Joystick

指令碼程式碼如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;

public class Joystick : ScrollRect
{
    private float mRadius;
    public System.Action<RectTransform> JoystickMoveHandle;
    public System.Action<RectTransform> JoystickEndHandle;

    protected override void Start()
    {
        mRadius = this.GetComponent<RectTransform>().sizeDelta.x * 0.5f;
        this.content.gameObject.SetActive(false);
    }


    public override void OnDrag(PointerEventData eventData)
    {  
        base.OnDrag(eventData);
        this.content.gameObject.SetActive(true);

        //虛擬搖桿移動
        var contentPostion = this.content.anchoredPosition;        
        if (contentPostion.magnitude > mRadius)
        {
            contentPostion = contentPostion.normalized * mRadius;
            SetContentAnchoredPosition(contentPostion);
        }
        //旋轉
        if (content.anchoredPosition.y != 0)
        {
            content.eulerAngles = new Vector3(0, 0, Vector3.Angle(Vector3.right, content.anchoredPosition) * content.anchoredPosition.y / Mathf.Abs(content.anchoredPosition.y) - 90);
        }

    }

    private void FixedUpdate()
    {
        if (this.content.gameObject.activeInHierarchy)
        {
            if (JoystickMoveHandle != null)
            {
                JoystickMoveHandle(this.content);
            }
        }
    }

    public override void OnEndDrag(PointerEventData eventData)
    {
        base.OnEndDrag(eventData);

        this.content.gameObject.SetActive(false);

        if (JoystickEndHandle != null)
        {
            JoystickEndHandle(this.content);
        }
    }
}

然後將Image2拖動到content屬性變數裡


這樣就可以移動並且拖動我們的虛擬搖桿了

接下來要讓我們的遊戲主角跟隨我們的搖桿移動而移動

在我們的主角兒掛載一個自定義指令碼

在Start方法裡新增程式碼:

mJoystick = GameObject.Find("Joystick").GetComponent<Joystick>();
        mJoystick.JoystickMoveHandle = JoystickHandle;
        mJoystick.JoystickEndHandle = JoystickEndHandle;

其中JoystickHandle方法程式碼為:

transform.eulerAngles = new Vector3(0, -content.eulerAngles.z, 0);
			transform.Translate(Vector3.forward * Time.deltaTime * mMoveSpeed);

接下來就可以執行我們的遊戲,觀察主角移動旋轉位置。

好了,本文就介紹到這裡,如果有問題可以在QQ上聯絡我哦!:352952839

相關推薦

Unity3d使用UGUI開發原生虛擬

在Unity3d中開發虛擬搖桿方式有比較多,可以使用EasyTouch、FairyGUI等外掛來開發。本文給大家介紹使用Unity3d的原生UGUI來開發出自己的虛擬搖桿,這樣可以減少遊戲資源包的大小。先展示下效果圖:現在開發我們的開發建立一個Image1,並且在Image1

cocos2D 虛擬Joystick功能實現

皮膚 @implementation InputLayer - (id)init { if(self = [super init]) { winSize = [[CCDirector sharedDirector] winSize];

虛擬的修改

poi 如果 [1] 運行時 inpu tex div 這樣的 通過 上次的代碼運行時會有bug:報錯 ArgumentException: Index out of bounds. 即Input.GetTouch()函數進行了越界訪問。於是上網看了看,發現Touc

Unity3d 基於NGUI的虛擬實現

實現效果預覽 C#程式碼 實現: 使用NGUI新增虛擬搖桿背景和其子物體按鈕,為按鈕Attach boxcollider和ButtionScript。為按鈕新增如下指令碼: 注意:其中的靜態屬性可以在控制物體移動的程式碼中訪問用於控制。

Unity3d虛擬控制物體移動及旋轉

   王者榮耀在現在看來可能已經成為不少人每天都會開啟一款軟體,角色的控制及其操作方式簡單,使其短時間內獲得了大量的玩家喜愛和追捧。    可以很明顯的看到王者榮耀的操作方式就是虛擬搖桿,可以控制人物的的移動,及其旋轉,或者是控制技能的釋放方向。此篇部落格就unity中如何實

Unity3d 控制角色移動 鍵盤按鍵與虛擬

先上角色移動指令碼 using UnityEngine; using System.Collections; public class PlayerMove:MonoBehaviour

unity3d 虛擬 ugui

網上找了好多都嫌麻煩,谷歌了一下,完美解決。 需要先建立 Canvas,如下: 程式碼拖拽到 backImage裡: JoyStick.cs using System.Collections; using System.Collec

Unity3d_UGUI虛擬(簡易)

       之前的專案中有用虛擬搖桿來操縱角色移動,但是之前使用的是EasyTouch,屬於NGUI下的一個外掛,但是本身專案是基於UGUI的,覺得這樣摻雜在一起有些不倫不類,就自己用UGUI做了一個簡易的虛擬搖桿(可以實現給角色移動指令碼發出搖桿的偏移引數類似於Easy

android遊戲引擎andengine學習系列三:繪製遊戲虛擬

 如何高效的學習,這才是我們最值得去學習的。 andengine中繪製虛擬遊戲搖桿非常簡單,只需要實現AnalogOnScreenControl模擬搖桿類,在設定一些屬性即可。先看效果圖: 左邊的搖桿是控制精靈上下左右移動,右邊的搖桿空值精靈的旋轉。程式碼結構跟and

unity虛擬的實現

在遊戲中,虛擬搖桿是很常見的,這裡我主要是製作第一人稱的虛擬搖桿,第三人稱的實現原理也是類似的。廢話不說,直接說實現方式。 最終效果圖如下: 實現方式分為3步: 1:在canvas下建立一個空的子物體,名稱為yangan或者你想要的其他名字,這裡為ya

Unity3D學習筆記(二十三):事件接口、虛擬、層級管理和背包系統

ram veh ces 跟隨鼠標 style 組件 屏幕 向上 grid 事件接口 IDragHandler(常用):鼠標按下拖動時執行(只要鼠標在拖動就一直執行) IDropHandler:對象拖動結束時,如果鼠標在物體的範圍內,執行一次(依賴於IDragHandler存

QT 模仿Android遊戲中虛擬(3)讓圓隨著角度移動

接著上一篇講起,我們需要在滑鼠離開圓的範圍的時候,讓圓跟著滑鼠與圓心的角度移動,那麼我們來看看我們的已知量是什麼: 1、圓心座標 2、圓的半徑 3、當前滑鼠的座標 運用一下我們的中學知識,根據(1、3

Unity_虛擬的實現_065

設定搖桿的背景圖片的錨點如下: 設定搖桿的錨點為背景圖片的中心點。 並給搖桿繫結指令碼如下: using UnityEngine; using UnityEngine.EventSystems

UGUI 虛擬的實現

建2張 image,大小自己看著辦: 第一步:將上一次拖拽實現的程式碼全部複製過來.將指令碼放在較小的正方形 image using UnityEngine; using System.Collections; using UnityEngine.UI;

自定義虛擬元件讓你一勞永逸

最近在研究虛擬搖桿實現方式的時候,發現網上的教程的實現方式可移植性並不是特別好,於是我決定自己實現一個虛擬搖桿元件,儲存到自己的元件庫,方便以後用到的時候直接使用(關注公眾號後臺回覆「虛擬搖桿元件」可獲取該元件),下面正文開始。   實現思路: 為了實現高度可移植,定義了兩個節點屬性,用於繫結場景和

SpriteKit手機遊戲JoyStick的使用 -- by iFIERO遊戲開發教程

tick eat self. idm rac child lar 重要 sce ### 工欲善其事,必先利其器 有時候學習如何應用第三方庫是非常重要的,因為我們不用再自己重復造輪子,在這裏,我們就把原先利用重力感應來操控飛機改為用遊戲搖桿joystick來操控,具體的

CC65 開發FC/NES 遊戲(三)使用

CC65在我的文章(一)中可以獲取到 或者直接去github下載cc65 這次的程式碼來自cc65的samples目錄下的hello.c 並做了修改和註釋 通過檢視原始碼可以看到裡面支援的機器型別 #if defined(__NES__) || defined(__PCE__) || defined

關於Unity5.5中自帶與車輪碰撞器的使用

cti 添加組件 class 碰撞器 call 如果 blog ext 面板 在創建好項目目錄的基礎上 導入一個第三方的資源包,在Project面板裏面 右鍵---->Import Package---->Custom Package---->easy_t

關於Unity中的操作

新的 anim forward easy 使用 -s war 搖桿 遊戲 之前在解決搖桿控制角色的時候使用的是RPG遊戲中主角的運動方式,有八個方向,最近找到一個新的方法,可以比較流暢地控制角色各個方向的移動 步驟 1.Easy Touch插件,角色控制器組件 2.在控

安全的虛擬幣場外交易平臺開發虛擬幣系統開發!!!

ima ESS 相對 cto roc 系統 消息 在線交易 可能 近來新出的虛擬幣的交易模式:場外交易,不在交易所內進行交易而在場外市場進行交易的活動,又稱“店頭交易”或“櫃臺交易”!這種對場外交易和在線交易的理解,可能意味著虛擬幣在中國的使用和交易將在未來發展得很好。這是