unity實(shí)現(xiàn)手機(jī)端搖桿控制人物移動(dòng)
前言
玩過王者榮耀或者荒野行動(dòng)的人,都知道,手機(jī)左下方或右下方都會(huì)有一個(gè)搖桿,滑動(dòng)搖桿可以讓人物向360度方向移動(dòng)。沒有玩過的可以看看下方圖片(荒野行動(dòng)手機(jī)端為例)。本篇就來講解如何使用unity制作搖桿控制人物移動(dòng)。

2種方法:
1.GUITexture制作,是unity自帶的一個(gè)joystick組件,主要由GUITexture和一個(gè)JS腳本構(gòu)成。優(yōu)點(diǎn):unity自帶,使用簡單方便。缺點(diǎn)是無法適應(yīng)屏幕大小。
2.EasyTouch插件,可以實(shí)現(xiàn)1的功能并且克服了1的缺陷,可以適應(yīng)屏幕大小。本篇文章也是主要講解使用easyTouch插件實(shí)現(xiàn)搖桿控制人物移動(dòng)。
準(zhǔn)備
1.導(dǎo)入easyTouch包。在網(wǎng)上下載easyTouch的package,然后import到項(xiàng)目中,這時(shí)候,菜單會(huì)出現(xiàn)Tools。這時(shí)候搖桿我們具備了。
2.導(dǎo)入人物。unity功能超級(jí)強(qiáng)大,自帶一個(gè)人物模型,叫Ethan。這個(gè)時(shí)候要導(dǎo)入Standard Assets。里面就有Ethan模型(具體在Standard Assets--character--ThirdPersonCharacter--Models--Ethan)。
具體實(shí)現(xiàn)
1.點(diǎn)擊菜單中的tools--Hedgehog Team--EasyTouch--Extensions--Add a new joystick,這時(shí)候scene中就有了一個(gè)搖桿。
2.導(dǎo)入Ethan,找到Ethan直接拖到scene中就OK。
3.joystick參數(shù)設(shè)置和介紹見下圖

3.寫腳本,綁定到人物Ethan上。
using UnityEngine;
using System.Collections;
public class MoveController : MonoBehaviour
{
void OnEnable()
{
EasyJoystick.On_JoystickMove += OnJoystickMove;
EasyJoystick.On_JoystickMoveEnd += OnJoystickMoveEnd;
}
//移動(dòng)搖桿結(jié)束
void OnJoystickMoveEnd(MovingJoystick move)
{
//停止時(shí),角色恢復(fù)狀態(tài)為idle
if (move.joystickName == "MoveJoystick")
{
GetComponent<Animation>().CrossFade("idle");
}
}
//移動(dòng)搖桿中
void OnJoystickMove(MovingJoystick move)
{
if (move.joystickName != "MoveJoystick")
{
return;
}
//獲取搖桿中心偏移的坐標(biāo)
float joyPositionX = move.joystickAxis.x;
float joyPositionY = move.joystickAxis.y;
//搖桿中心位置只要產(chǎn)生變動(dòng),即只要對(duì)搖桿進(jìn)行操作
if (joyPositionY != 0 || joyPositionX != 0)
{
//移動(dòng)玩家的位置(按朝向位置移動(dòng))
transform.Translate(Vector3.forward * Time.deltaTime * 100);
//播放奔跑動(dòng)畫
GetComponent<Animation>().CrossFade("run");
}
}
}
#endregion
4.由于腳本中人物的移動(dòng)是播放動(dòng)畫,unity本身就有很多走啊、跑啊、靜止的一些動(dòng)畫,所以我們現(xiàn)在為Ethan添加動(dòng)畫(animation)。如下圖所示:

5.由于我們的游戲是純第一人稱游戲,所以是不需要再游戲中看到自己的。所以為Ethan添加First Person Controller的腳本。(這個(gè)根據(jù)項(xiàng)目需要而定)。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
ASP.NET MVC 5使用X.PagedList.Mvc進(jìn)行分頁教程(PagedList.Mvc)
這篇文章主要介紹了ASP.NET MVC 5使用X.PagedList.Mvc進(jìn)行分頁教程(原名為PagedList.Mvc),需要的朋友可以參考下2014-10-10
WPF自定義實(shí)現(xiàn)雷達(dá)圖控件的示例詳解
雷達(dá)圖用于表示不同內(nèi)容的占比關(guān)系,在項(xiàng)目中有廣泛的應(yīng)用,但是目前未曾有封裝良好的雷達(dá)圖控件,所以本文分享了如何封裝一個(gè)通用的雷達(dá)圖控件,希望對(duì)大家有所幫助2023-08-08
C#基礎(chǔ)知識(shí)之base關(guān)鍵字介紹
本文主要介紹base關(guān)鍵字的使用方法,base關(guān)鍵字可以調(diào)用基類重寫的方法,可以調(diào)用基類的構(gòu)造方法,還可以在EntityFramework中使用,下面一一介紹。2016-04-04
C#使用HttpClient進(jìn)行Post請(qǐng)求出現(xiàn)超時(shí)問題的解決及優(yōu)化
最近我的控制臺(tái)程序發(fā)現(xiàn)有時(shí)候總是出現(xiàn)請(qǐng)求超時(shí)等問題,通常好幾分鐘最多只有3-4個(gè)請(qǐng)求,在使用apipost發(fā)現(xiàn)并發(fā)10個(gè)5分鐘也沒有問題,那么問題就出在我的請(qǐng)求端了,所以本文給大家介紹了C# 使用HttpClient進(jìn)行Post請(qǐng)求總是出現(xiàn)超時(shí)問題的優(yōu)化,需要的朋友可以參考下2025-01-01
C#實(shí)現(xiàn)文件斷點(diǎn)續(xù)傳下載的方法
這篇文章主要介紹了C#實(shí)現(xiàn)文件斷點(diǎn)續(xù)傳下載的方法,涉及網(wǎng)絡(luò)文件操作的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-05-05
C#使用Exchange實(shí)現(xiàn)發(fā)送郵件
最近項(xiàng)目中需要用到exchange的操作,所以本文就參照msdn弄了一個(gè)簡單的C#操作類,實(shí)現(xiàn)了發(fā)送郵件和拉取收件箱的功能,感興趣的小伙伴可以了解下2023-10-10
winform實(shí)現(xiàn)可拖動(dòng)的自定義Label控件
這篇文章主要為大家詳細(xì)介紹了winform實(shí)現(xiàn)可拖動(dòng)的自定義Label控件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03

