unity实现手机端摇杆控制人物移动

所属分类: 软件编程 / C#教程 阅读数: 132
收藏 0 赞 0 分享

前言

玩过王者荣耀或者荒野行动的人,都知道,手机左下方或右下方都会有一个摇杆,滑动摇杆可以让人物向360度方向移动。没有玩过的可以看看下方图片(荒野行动手机端为例)。本篇就来讲解如何使用unity制作摇杆控制人物移动。

2种方法:

1.GUITexture制作,是unity自带的一个joystick组件,主要由GUITexture和一个JS脚本构成。优点:unity自带,使用简单方便。缺点是无法适应屏幕大小。

2.EasyTouch插件,可以实现1的功能并且克服了1的缺陷,可以适应屏幕大小。本篇文章也是主要讲解使用easyTouch插件实现摇杆控制人物移动。

准备

1.导入easyTouch包。在网上下载easyTouch的package,然后import到项目中,这时候,菜单会出现Tools。这时候摇杆我们具备了。

2.导入人物。unity功能超级强大,自带一个人物模型,叫Ethan。这个时候要导入Standard Assets。里面就有Ethan模型(具体在Standard Assets--character--ThirdPersonCharacter--Models--Ethan)。

具体实现

1.点击菜单中的tools--Hedgehog Team--EasyTouch--Extensions--Add a new joystick,这时候scene中就有了一个摇杆。

2.导入Ethan,找到Ethan直接拖到scene中就OK。

3.joystick参数设置和介绍见下图

3.写脚本,绑定到人物Ethan上。

using UnityEngine;
using System.Collections;
 
public class MoveController : MonoBehaviour
{
 void OnEnable()
 {
 EasyJoystick.On_JoystickMove += OnJoystickMove;
 EasyJoystick.On_JoystickMoveEnd += OnJoystickMoveEnd;
 }
 
 //移动摇杆结束 
 void OnJoystickMoveEnd(MovingJoystick move)
 {
 //停止时,角色恢复状态为idle 
 if (move.joystickName == "MoveJoystick")
 {
  GetComponent<Animation>().CrossFade("idle");
 }
 }
 
 //移动摇杆中 
 void OnJoystickMove(MovingJoystick move)
 {
 if (move.joystickName != "MoveJoystick")
 {
  return;
 }
 
 //获取摇杆中心偏移的坐标 
 float joyPositionX = move.joystickAxis.x;
 float joyPositionY = move.joystickAxis.y;
 
 //摇杆中心位置只要产生变动,即只要对摇杆进行操作
 if (joyPositionY != 0 || joyPositionX != 0)
 {  
  //移动玩家的位置(按朝向位置移动) 
  transform.Translate(Vector3.forward * Time.deltaTime * 100);
  //播放奔跑动画 
  GetComponent<Animation>().CrossFade("run"); 
 }
 }
}
#endregion

4.由于脚本中人物的移动是播放动画,unity本身就有很多走啊、跑啊、静止的一些动画,所以我们现在为Ethan添加动画(animation)。如下图所示:

5.由于我们的游戏是纯第一人称游戏,所以是不需要再游戏中看到自己的。所以为Ethan添加First Person Controller的脚本。(这个根据项目需要而定)。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

c#开发word批量转pdf源码分享

已经安装有Office环境,借助一些简单的代码即可实现批量Word转PDF,看下面的实例源码吧
收藏 0 赞 0 分享

c# xml API操作的小例子

这篇文章主要介绍了c# xml API操作的小例子,有需要的朋友可以参考一下
收藏 0 赞 0 分享

c#唯一值渲染实例代码

这篇文章主要介绍了c#唯一值渲染实例代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

淘宝IP地址库采集器c#代码

这篇文章主要介绍了淘宝IP地址库采集器c#代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

C#在后台运行操作(BackgroundWorker用法)示例分享

BackgroundWorker类允许在单独的专用线程上运行操作。如果需要能进行响应的用户界面,而且面临与这类操作相关的长时间延迟,则可以使用BackgroundWorker类方便地解决问题,下面看示例
收藏 0 赞 0 分享

c#文本加密程序代码示例

这是一个加密软件,但只限于文本加密,加了窗口控件的滑动效果,详细看下面的代码
收藏 0 赞 0 分享

c#生成站点地图(SiteMapPath)文件示例程序

这篇文章主要介绍了c#生成站点地图(SiteMapPath)文件的示例,大家参考使用
收藏 0 赞 0 分享

C# 键盘Enter键取代Tab键实现代码

这篇文章主要介绍了C# 键盘Enter键取代Tab键实现代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

C# WinForm导出Excel方法介绍

在.NET应用中,导出Excel是很常见的需求,导出Excel报表大致有以下三种方式:Office PIA,文件流和NPOI开源库,本文只介绍前两种方式
收藏 0 赞 0 分享

C#串口通信程序实例详解

在.NET平台下创建C#串口通信程序,.NET 2.0提供了串口通信的功能,其命名空间是System.IO.Ports,创建C#串口通信程序的具体实现是如何的呢?让我们开始吧
收藏 0 赞 0 分享
查看更多