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

2種方法:
1.GUITexture制作,是unity自帶的一個joystick組件,主要由GUITexture和一個JS腳本構(gòu)成。優(yōu)點:unity自帶,使用簡單方便。缺點是無法適應(yīng)屏幕大小。
2.EasyTouch插件,可以實現(xiàn)1的功能并且克服了1的缺陷,可以適應(yīng)屏幕大小。本篇文章也是主要講解使用easyTouch插件實現(xiàn)搖桿控制人物移動。
準(zhǔn)備
1.導(dǎo)入easyTouch包。在網(wǎng)上下載easyTouch的package,然后import到項目中,這時候,菜單會出現(xiàn)Tools。這時候搖桿我們具備了。
2.導(dǎo)入人物。unity功能超級強(qiáng)大,自帶一個人物模型,叫Ethan。這個時候要導(dǎo)入Standard Assets。里面就有Ethan模型(具體在Standard Assets--character--ThirdPersonCharacter--Models--Ethan)。
具體實現(xiàn)
1.點擊菜單中的tools--Hedgehog Team--EasyTouch--Extensions--Add a new joystick,這時候scene中就有了一個搖桿。
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;
}
//移動搖桿結(jié)束
void OnJoystickMoveEnd(MovingJoystick move)
{
//停止時,角色恢復(fù)狀態(tài)為idle
if (move.joystickName == "MoveJoystick")
{
GetComponent<Animation>().CrossFade("idle");
}
}
//移動搖桿中
void OnJoystickMove(MovingJoystick move)
{
if (move.joystickName != "MoveJoystick")
{
return;
}
//獲取搖桿中心偏移的坐標(biāo)
float joyPositionX = move.joystickAxis.x;
float joyPositionY = move.joystickAxis.y;
//搖桿中心位置只要產(chǎn)生變動,即只要對搖桿進(jìn)行操作
if (joyPositionY != 0 || joyPositionX != 0)
{
//移動玩家的位置(按朝向位置移動)
transform.Translate(Vector3.forward * Time.deltaTime * 100);
//播放奔跑動畫
GetComponent<Animation>().CrossFade("run");
}
}
}
#endregion
4.由于腳本中人物的移動是播放動畫,unity本身就有很多走啊、跑啊、靜止的一些動畫,所以我們現(xiàn)在為Ethan添加動畫(animation)。如下圖所示:

5.由于我們的游戲是純第一人稱游戲,所以是不需要再游戲中看到自己的。所以為Ethan添加First Person Controller的腳本。(這個根據(jù)項目需要而定)。
以上就是本文的全部內(nèi)容,希望對大家的學(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
C#使用HttpClient進(jìn)行Post請求出現(xiàn)超時問題的解決及優(yōu)化
最近我的控制臺程序發(fā)現(xiàn)有時候總是出現(xiàn)請求超時等問題,通常好幾分鐘最多只有3-4個請求,在使用apipost發(fā)現(xiàn)并發(fā)10個5分鐘也沒有問題,那么問題就出在我的請求端了,所以本文給大家介紹了C# 使用HttpClient進(jìn)行Post請求總是出現(xiàn)超時問題的優(yōu)化,需要的朋友可以參考下2025-01-01

