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

 更新时间:2020年04月14日 14:44:28   作者:魏恩君--Caroline  
这篇文章主要为大家详细介绍了unity实现手机端摇杆控制人物移动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

前言

玩过王者荣耀或者荒野行动的人,都知道,手机左下方或右下方都会有一个摇杆,滑动摇杆可以让人物向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的脚本。(这个根据项目需要而定)。

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

相关文章

  • des加密解密源码 C# key值问题分析

    des加密解密源码 C# key值问题分析

    本文主要介绍了des加密解密源码,C# key值问题,大家参考使用吧
    2014-01-01
  • C#操作SQLite数据库帮助类详解

    C#操作SQLite数据库帮助类详解

    这篇文章主要介绍了C#操作SQLite数据库帮助类,详细分析了C#针对sqlite数据库的连接、查询、分页等各种常见操作的实现与封装技巧,需要的朋友可以参考下
    2017-07-07
  • ASP.NET MVC 5使用X.PagedList.Mvc进行分页教程(PagedList.Mvc)

    ASP.NET MVC 5使用X.PagedList.Mvc进行分页教程(PagedList.Mvc)

    这篇文章主要介绍了ASP.NET MVC 5使用X.PagedList.Mvc进行分页教程(原名为PagedList.Mvc),需要的朋友可以参考下
    2014-10-10
  • WPF自定义实现雷达图控件的示例详解

    WPF自定义实现雷达图控件的示例详解

    雷达图用于表示不同内容的占比关系,在项目中有广泛的应用,但是目前未曾有封装良好的雷达图控件,所以本文分享了如何封装一个通用的雷达图控件,希望对大家有所帮助
    2023-08-08
  • c# 进程和线程的区别与联系

    c# 进程和线程的区别与联系

    这篇文章主要介绍了c# 进程和线程的区别与联系,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2020-12-12
  • C#基础知识之base关键字介绍

    C#基础知识之base关键字介绍

    本文主要介绍base关键字的使用方法,base关键字可以调用基类重写的方法,可以调用基类的构造方法,还可以在EntityFramework中使用,下面一一介绍。
    2016-04-04
  • C#使用HttpClient进行Post请求出现超时问题的解决及优化

    C#使用HttpClient进行Post请求出现超时问题的解决及优化

    最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也没有问题,那么问题就出在我的请求端了,所以本文给大家介绍了C# 使用HttpClient进行Post请求总是出现超时问题的优化,需要的朋友可以参考下
    2025-01-01
  • C#实现文件断点续传下载的方法

    C#实现文件断点续传下载的方法

    这篇文章主要介绍了C#实现文件断点续传下载的方法,涉及网络文件操作的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-05-05
  • C#使用Exchange实现发送邮件

    C#使用Exchange实现发送邮件

    最近项目中需要用到exchange的操作,所以本文就参照msdn弄了一个简单的C#操作类,实现了发送邮件和拉取收件箱的功能,感兴趣的小伙伴可以了解下
    2023-10-10
  • winform实现可拖动的自定义Label控件

    winform实现可拖动的自定义Label控件

    这篇文章主要为大家详细介绍了winform实现可拖动的自定义Label控件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03

最新评论