我要加入

UNITY3D聖殿-自由的遊戲設計天堂

會長:stormcorn / stormcorn開設日:2013-03-21 18:05:22

  • EXP

  • 資金24183  
  • 招募制度:自由加入制
  • 成員:1738 人
  • 昨日人氣:0

虛擬搖桿

推上精選編輯

近期編輯:stormcorn ...看更多

Unity3d easyTouch joystick虛擬搖桿的使用辦法
作者:admin日期:2013年10月02日來源:互聯網  【字體: ​​中 】   我要評論(0)
快速創建雙搖桿的工具- Easy Touch

在一些以往的教程裡面大多已經介紹過了搖桿的GUI製作方式,不過對於一些不是懂程序的朋友來說,要做到將搖桿與場景內角色動作進行連接就有些難度了,有鑑於此,我們推荐一個比較方便的工具來完成上述的工作,這個使用的工具的為Easy Touch,從名稱上來看就能理解應該是很容易操作的一個東西。

現在,我們就來實際的安裝與操作,首先導入Easy Touch的資源包,這個資源代號是2.5的版本,可以用在3.5.x與4.0的Unity版本上面。插件下載位置:http://www.narkii.com/club/thread-282960-1.html


如圖,安裝完成後,在Assets目錄裡面多了一個Easy Touch的文件夾。


我們在場景內放置了一個第三人稱的角色,這個模型的套件是從Character Controller資源包內所導入,也是我們經常用來測試遊戲效果的一套工具。


從模型的結構可看到裡面有骨架動作(Bip01), 相機控制(CameraAxis)與Construction_Worker這幾種組件。


接著選擇Hedgehog Team > Easy Touch > Extensions > Adding a new joystick功能,在Game視圖內自動在左下方增加一個默認的搖桿圖示。



將Hierarchy裡面自動生成的New Joystick 更名為Move_Turn_Joystick,表示左邊的搖桿的作用設定為移動與轉向,同時系統內也會自動增加一個Easy Touch的控制組件。


Easy Touch的控制組件主要是一些基本屬性的設定,原則上來說保持默認的設置即可。


在Move_Turn_Joystick的屬性裡面需要對搖桿的設置進行一些調整,首先是搖杆位置的調整,我們可以修改Joystick position的XY數值來改變搖桿在遊戲畫面的水平與高低位置。


如圖,通過Joystick position的XY數值可隨時調整搖桿的位置。


將Interaction的欄目第一個選項Interaction type更換為Direct And Event, 使用這個選項可以讓搖桿的控制與角色的動作事件產生連接,將XY axis speed(水平與垂直的軸向移動)分別設定為50與10來調整搖桿的靈敏度, 然後將Player(角色組件)拖曳到Joystick X to 的欄位,Influenced 更改為Rotate,Axis influenced 設置為Y,表示在搖桿左右移動時角色會以Y為軸心進行旋轉。Joystick Y to也是相同的做法,差別在於Influenced 設置為Translate Local的移動模式,選擇Z軸表示搖桿在上下作用時,角色會在Z軸(地面)進行移動。


按下Play進行測試,當我們使用鼠標對搖桿進行不同方向的移動時,角色會進行左右視角的觀看與前進的動作。


接下來設置右邊的搖桿,同樣的選擇Hedgehog Team > Easy Touch > Extensions > Adding a new joystick功能增加另一個的搖桿組件,然後將名稱更改為cameraController。


在遊戲畫面中cameraController是屬於右搖桿的部分,所以我們需要調整Joystick position的XY數值,使其能與左搖桿有一個顯示的區分。




由於右搖桿只用來控制相機的動作,所以在Interaction type只需選擇Directi模式即可。
XY的Axis Speed ​​設置為50與2,然後將相機的定位點CameraAxis拖曳到Joystick X to的欄位,Influenced選擇Rotate Local模式,對應的轉向為Y軸。
將相機拖曳到Joystick Y to的欄位,Influenced選擇Translate Local模式,對應的轉向為Z軸,這個設定的作用是讓右搖桿能控制相機視角的轉向與遠進。


設置完成後進行Play測試,現在兩個搖桿分別控制了視角的變化與角色的行進動作。




完成所有設定之後,我們來看看角色對應左搖桿所使用的腳本內容:

using UnityEngine;
using System.Collections;

/// <summary>
/// Joystick event
/// </summary>
public class JoystickEvent : MonoBehaviour {

    void OnEnable(){
        EasyJoystick.On_JoystickMove += On_JoystickMove;
        EasyJoystick.On_JoystickMoveEnd += On_JoystickMoveEnd;
    }
    
    void OnDisable(){
        EasyJoystick.On_JoystickMove -= On_JoystickMove ;
        EasyJoystick.On_JoystickMoveEnd -= On_JoystickMoveEnd;
    }
        
    void OnDestroy(){
        EasyJoystick. On_JoystickMove -= On_JoystickMove;     
        EasyJoystick.On_JoystickMoveEnd -= On_JoystickMoveEnd;
    }
    
//用來對應建立的搖桿組件名稱,在搖桿沒有任何作用的情況下,角色為靜止的動作。
    void On_JoystickMoveEnd(MovingJoystick move){
        if (move.joystickName == "Move_Turn_Joystick"){
            animation.CrossFade("idle");
        }
    }

//搖桿的Y軸如果偏移值大於0並小於0.5的數值,角色動作更換為走路,如果等於或是大於0.5則切換為跑步的動作。

    void On_JoystickMove( MovingJoystick move){
        if (move.joystickName == "Move_Turn_Joystick"){
            if (Mathf.Abs(move.joystickAxis.y)>0 && Mathf.Abs(move.joystickAxis.y)<0.5){
                animation. CrossFade("walk");
                
            }     
            else if (Mathf.Abs(move.joystickAxis.y)>=0.5){
                animation.CrossFade("run");     
            }
        }
    }
}

Easy Touch是一個快速而方便的觸控性插件,除了搖桿的製作功能,多點觸控的設計亦是這個插件的極大優勢,在後面的章節裡面,我們將會針對多點觸控部分進行更多的介紹。
 
www.J2meGame.com精心收集。

公會首頁

主選單
關聯資料

目前沒有資料連到「虛擬搖桿」。