Unity自学虚拟摇杆
一.创建虚拟摇杆对象
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自学虚拟摇杆相关推荐
- Unity实现虚拟摇杆
首先添加两者图片 从左到右分别是Back和Front 将Front放到Back中心 在Front身上添加脚本 using System.Collections; using System.Collec ...
- Unity实战篇:实现虚拟摇杆控制人物(Easy Touch 5.X插件)
先上一张效果图 1.先导入Easy Touch 5.X插件 https://download.csdn.net/download/qq_15020543/10718144 强烈建议大家去Unity 商 ...
- unity中的2D虚拟摇杆和3D虚拟摇杆
源代码链接https://github.com/hiramtan/HiJoystick_unity 如何使用 可以从此链接下载最新的unity package: 完成功能 2D虚拟摇杆 3D虚拟摇杆 ...
- Unity用UGUI做虚拟摇杆
一.首先点击UI创建两个Image,将Image的Source Image改成自己想要的Texture即可,然后在Canvas下创建一空物体,将两个Image放在空物体下作为他的子对象: 然后为可以拖 ...
- Unity中实现虚拟摇杆
一:效果演示 二:使用 --创建一个可操作的区域Joystick作为父物体,调整Joystick大小以控制可以操作的区域 --在可操作区域下创建摇杆背景Background --在摇杆背景下创建摇杆控 ...
- Unity 简单的虚拟摇杆
需求:点击创建一个虚拟摇杆底盘,鼠标拖拽时候上方摇杆会跟随鼠标方向移动,并且不会超出摇杆盘范围 *摇杆功能另外实现 UI显示 using System.Collections; using Syste ...
- EasyTouch5 之 Joystick 虚拟摇杆
一.EasyTouch 资源结构 EasyTouchBundle [插件的根目录] |-EasyTouch [插件核心,核心功能的实现,偏向底层] |-EasyTouchControls [插件控制器 ...
- EasyTouch 学习之——ETCJoystick 虚拟摇杆
ETC Joystick 继承自 ETCBase类, 并且要实现 PointerEnterHandler IDragHandler, IBeginDragHander IPointerDownHan ...
- Unity3d项目入门之虚拟摇杆
Unity本身不提供摇杆的组件,开发者可以使用牛逼的EasyTouch插件或者应用NGUI实现相关的需求,下面本文通过Unity自身的UGUI属性,实现虚拟摇杆的功能. 主参考 <Unity:使 ...
- 【功能实现】手机游戏虚拟摇杆功能实现
[UNITY3D] 声明: 查API和根据自己的想法实现此功能.如果你喜欢我这个实现,希望你能有所收获,如果你能改进那就更棒了,但如果你想直接拿走,希望标明出处. 只需要把脚本交给画布下的空物体,自行 ...
最新文章
- BootStrap selectpicker
- 从“共享马扎”的营销,看共享经济的刷屏玩法
- Android測试APP工具(一)
- Flexbox弹性盒模型
- how is configuration data loaded for framework preloadLibCss
- 递归——黑白棋子的移动(洛谷 P1259)
- SpringBoot配置多Redis数据源
- @前端工程师,节约网站流量用这一招就够了!
- 接口implements
- 做人做事,就两个字!
- 7个示例科普CPU CACHE(zz)
- 那些小城里的分析大师们为什么发不了财?
- 剪贴画制作相关资源收集
- 深度学习计算机视觉高级图片标注工具SmartTool介绍
- linux集群服务器搭建
- 音频格式转换器哪个好,推荐几款免费的mp3格式转换器
- android各版本市场占有率报告,百度报告:Android市场份额大增
- 计算机cpu天体图,电脑cpu天梯图2019|最新Intel/AMD处理器性能排行2019
- 导出RK3288开发板上的根文件系统,并打包img
- 机械振动信号15个时域统计指标