一.创建虚拟摇杆对象

1.虚拟摇杆区域:在Canvas下创建Image对象:VirtualControllerArea

(1)Color:R=0,G=0,B=0,A=75

(2)RectTransform:Pos X=-500,Pos Y=-200,Width=200,Height=200

2.虚拟摇杆控件:在VirtualControllerArea下创建Image对象VirtualController

(1)Color:R=0,G=0,B=0,A=75

(2)RectTransform:Pos X=-0,Pos Y=-0,Width=75,Height=75

二.新建虚拟摇杆组件VirtualController

1.给VirtualController对象添加VirtualController添加虚拟摇杆组件

2.组件代码详解:

using UnityEngine;

using UnityEngine.EventSystems;

public class VirtualController : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler

{

Vector3 _startPosition;

public float _minXPos;

public float _minYPos;

public float _maxXPos;

public float _maxYPos;

void Start()

{

}

#region 在开始拖拽transform对象时,获取transorm的初始位置

public void OnBeginDrag(PointerEventData data)

{

_startPosition = transform.position;

}

#endregion

#region 在拖拽transform对象时,设置transorm的位置为拖拽后的位置并限制transform的位置

public void OnDrag(PointerEventData data)

{

transform.position = data.position;

transform.localPosition = new Vector3 (Mathf.Clamp (transform.localPosition.x, _minXPos, _maxXPos), Mathf.Clamp (transform.localPosition.y, _minYPos, _maxYPos), 0);

}

#endregion

#region 在结束拖拽transform对象时,重置transorm到初始位置

public void OnEndDrag(PointerEventData data)

{

transform.position = _startPosition;

}

#endregion

}

三.虚拟摇杆使用案例

1.新建玩家移动组件PlayerMove

2.创建立方体并重置Transform

3.给立方体绑定PlayerMove组件

4.组件代码详解:

using UnityEngine;

public class PlayerMove : MonoBehaviour

{

VirtualController _playControl;

void Start ()

{

_playControl = GameObject.Find ("VirtualController").GetComponent<VirtualController> ();

}

void Update ()

{

#region 根据虚拟摇杆的水平方向来模拟Input.GetAxis("Horizontal")旋转玩家

if (_playControl.transform.localPosition.x > 0) {

transform.Rotate (0, 20 * Time.deltaTime, 0);

}

if (_playControl.transform.localPosition.x < 0) {

transform.Rotate (0, -20 * Time.deltaTime, 0);

}

#endregion

#region 根据虚拟摇杆的垂直方向来模拟Input.GetAxis("Vertical")移动玩家

if (_playControl.transform.localPosition.y > 0) {

transform.Translate (transform.forward * 10 * Time.deltaTime);

}

if (_playControl.transform.localPosition.y < 0) {

transform.Translate (transform.forward * -10 * Time.deltaTime);

}

#endregion

}

}

Unity自学虚拟摇杆相关推荐

  1. Unity实现虚拟摇杆

    首先添加两者图片 从左到右分别是Back和Front 将Front放到Back中心 在Front身上添加脚本 using System.Collections; using System.Collec ...

  2. Unity实战篇:实现虚拟摇杆控制人物(Easy Touch 5.X插件)

    先上一张效果图 1.先导入Easy Touch 5.X插件 https://download.csdn.net/download/qq_15020543/10718144 强烈建议大家去Unity 商 ...

  3. unity中的2D虚拟摇杆和3D虚拟摇杆

    源代码链接https://github.com/hiramtan/HiJoystick_unity 如何使用 可以从此链接下载最新的unity package: 完成功能 2D虚拟摇杆 3D虚拟摇杆 ...

  4. Unity用UGUI做虚拟摇杆

    一.首先点击UI创建两个Image,将Image的Source Image改成自己想要的Texture即可,然后在Canvas下创建一空物体,将两个Image放在空物体下作为他的子对象: 然后为可以拖 ...

  5. Unity中实现虚拟摇杆

    一:效果演示 二:使用 --创建一个可操作的区域Joystick作为父物体,调整Joystick大小以控制可以操作的区域 --在可操作区域下创建摇杆背景Background --在摇杆背景下创建摇杆控 ...

  6. Unity 简单的虚拟摇杆

    需求:点击创建一个虚拟摇杆底盘,鼠标拖拽时候上方摇杆会跟随鼠标方向移动,并且不会超出摇杆盘范围 *摇杆功能另外实现 UI显示 using System.Collections; using Syste ...

  7. EasyTouch5 之 Joystick 虚拟摇杆

    一.EasyTouch 资源结构 EasyTouchBundle [插件的根目录] |-EasyTouch [插件核心,核心功能的实现,偏向底层] |-EasyTouchControls [插件控制器 ...

  8. EasyTouch 学习之——ETCJoystick 虚拟摇杆

    ETC Joystick 继承自 ETCBase类, 并且要实现 PointerEnterHandler  IDragHandler, IBeginDragHander IPointerDownHan ...

  9. Unity3d项目入门之虚拟摇杆

    Unity本身不提供摇杆的组件,开发者可以使用牛逼的EasyTouch插件或者应用NGUI实现相关的需求,下面本文通过Unity自身的UGUI属性,实现虚拟摇杆的功能. 主参考 <Unity:使 ...

  10. 【功能实现】手机游戏虚拟摇杆功能实现

    [UNITY3D] 声明: 查API和根据自己的想法实现此功能.如果你喜欢我这个实现,希望你能有所收获,如果你能改进那就更棒了,但如果你想直接拿走,希望标明出处. 只需要把脚本交给画布下的空物体,自行 ...

最新文章

  1. BootStrap selectpicker
  2. 从“共享马扎”的营销,看共享经济的刷屏玩法
  3. Android測试APP工具(一)
  4. Flexbox弹性盒模型
  5. how is configuration data loaded for framework preloadLibCss
  6. 递归——黑白棋子的移动(洛谷 P1259)
  7. SpringBoot配置多Redis数据源
  8. @前端工程师,节约网站流量用这一招就够了!
  9. 接口implements
  10. 做人做事,就两个字!
  11. 7个示例科普CPU CACHE(zz)
  12. 那些小城里的分析大师们为什么发不了财?
  13. 剪贴画制作相关资源收集
  14. 深度学习计算机视觉高级图片标注工具SmartTool介绍
  15. linux集群服务器搭建
  16. 音频格式转换器哪个好,推荐几款免费的mp3格式转换器
  17. android各版本市场占有率报告,百度报告:Android市场份额大增
  18. 计算机cpu天体图,电脑cpu天梯图2019|最新Intel/AMD处理器性能排行2019
  19. 导出RK3288开发板上的根文件系统,并打包img
  20. 机械振动信号15个时域统计指标

热门文章

  1. Python 源码剖析 目录
  2. python源码深度剖析_Python源码剖析-深度探索动态语言核心技术 PDF 下载
  3. smartadmin mysql_ApiBoot Logging 和Logging Admin使用总结
  4. 10G ocp 题库
  5. opencv车牌照识别
  6. Android QFIL 烧录
  7. 海思接收bt1120外同步视频流
  8. 邹博机器学习代码分析(1)-线性回归
  9. 《Redis开发与运维》读书笔记
  10. 《FLUENT 14流场分析自学手册》——2.4 FLUENT14.5的功能模块和分析过程