参数属性设置

  1. 控制器根直径为60,半径为30;总直径为214,半径为107。
    根直径为60像素,半径即为30像素;虚拟摇杆总直径为214像素,半径为107像素。点击位置距离中心点的距离在30像素以内的识别为对虚拟摇杆进行移动,在30-107像素范围内为方向控制。
  2. 移动距离:
    // x:132– -132
    // y:200– -294
    像素在界面中移动的相对坐标限度,超过限度的虚拟摇杆将停留在边界。
  3. CountrolDirection对应方向:
    //0:top 1:bottom 2:left 3:right
    CountrolDirection为类的属性,通过设置属性的方式来改变方向,同时方便其他类取得方向。
public enum HeroDistance { Top,Bottom,Left,Right,None}

参数定义

    private GameObject ControlPanel;//获取自身private bool isMouseDown;//鼠标是否按下private bool isFollowMouse;//是否跟随鼠标移动public GameObject[] ControlDirection=new GameObject[4];//创建一个GameObject数组,得到4个不同方向的Imageprivate Canvas canvas;//获取UGUI的根面板private RectTransform rectTransform;//获取UGUI根面板的相对坐标系private HeroDistance heroDistance = HeroDistance.None;//初始化方向,为None。

Awake方法初始化设置

    void Awake() {ControlPanel = this.transform.Find("ControlPanel").gameObject;canvas = GameObject.Find("Canvas").GetComponent<Canvas>();rectTransform = canvas.transform as RectTransform;}

检测鼠标的按下与抬起

为检测鼠标的按下与抬起,需要实现两个接口,分别是:IPointerDownHandler,IPointerUpHandler。
为实现接口而创建的两个类:

    #region 检测鼠标按下抬起public void OnPointerDown(PointerEventData eventData) {isMouseDown = true;}public void OnPointerUp(PointerEventData eventData) {isMouseDown = false;}#endregion

其他方法通过获取isMouseDown对象来确定是否按下。

放大和缩小底盘动画

采用itween运动插件

    #region 放大控件-Larger(GameObject);缩小控件-Narrow(GameObject)//当Scale不为1时进行放大if (go.transform.localScale.x < 1 || go.transform.localScale.y < 1) {Hashtable parameters = new Hashtable();//创建Hash表parameters.Add("scale", new Vector3(1, 1, 1));//运动的Scaleparameters.Add("time", 0.2f);//运动时间parameters.Add("ignoretimescale", true);//不受time.timescale的控制iTween.ScaleTo(go,parameters);} }//运动方式与放大刚好相反private void Narrow(GameObject go){if (go.transform.localScale.x > 0 || go.transform.localScale.y > 0) {Hashtable parameters = new Hashtable();parameters.Add("scale", new Vector3(0, 0, 1));parameters.Add("time", 0.2f);parameters.Add("ignoretimescale", true);iTween.ScaleTo(go, parameters);}}#endregion

跟随鼠标移动方法

#region 跟随鼠标移动- FollowMouse()private void FollowMouse() {//如果检测到鼠标按下if (isMouseDown) {//如果正在跟随鼠标移动if (isFollowMouse) {//通过ReturnMouseDownPos()方法获取鼠标移动到的位置Vector2 pos = ReturnMouseDownPos();//设置边界,在边界内if (pos.x <= 210f && pos.x >= -220f && pos.y <= 300f && pos.y >= -380f){//设置虚拟摇杆的位置this.transform.localPosition = new Vector3(pos.x, pos.y, this.transform.localPosition.z);}else{//在边界外float newX = pos.x, newY = pos.y;if (pos.x > 210f){newX = 210f;}else if(pos.x< -220f){newX = -220f;}if (pos.y > 300f){newY = 300f;}else if(pos.y< -380f){newY = -380f;}this.transform.localPosition = new Vector3(newX, newY, this.transform.localPosition.z);}}}}#endregion

【四方向型】虚拟摇杆 C#代码部分(1)--基本参数与动画方法相关推荐

  1. 【四方向型】虚拟摇杆的构造及素材

    结构 虚拟摇杆的结构分为3个部分 1. 虚拟摇杆的"根",位于中心,作用是确定虚拟摇杆的位置,同时该摇杆在设计时要求在"根"部增加功能,即按住该部分可以移动虚拟 ...

  2. Cocos2d-x虚拟摇杆控制精灵上下左右运动----之游戏开发《赵云要格斗》(1)

      这里是Evankaka的博客,欢迎大家前面讨论与交流------      转载请注明出处http://blog.csdn.net/evankaka/article/details/4204350 ...

  3. Cocos2d-x虚拟摇杆控制精灵上下左右运动之————“赵云要格斗”(1)

    转载请注明出处http://blog.csdn.net/evankaka/article/details/42043509 有需要源代码和材料的邮箱留个,这里实现了能通过虚拟摇杆控制精灵的运动,而且能 ...

  4. 二丶Android如何自定义一个可移动的飞行虚拟摇杆?

    摘要: 上次我们自定义了一个固定位置摇杆,此摇杆无法调整杆量,且位置固定,这次我们就来定义一个可以自由调整杆量和变换位置的虚拟摇杆. 下面就写一下需要实现此虚拟摇杆的步骤: 一丶初始化资源 我们需要美 ...

  5. cocos2dx游戏开发学习——虚拟摇杆(8方向)讲解

    写这篇博客的目的主要是记录一下 虚拟摇杆的实现过程.虚拟摇杆一般分文四方向和八方向,也主要根据项目需求来决定.直接进入主题吧. 先上效果图: 方向的思路分析 看图,说先我们可以将8个方向在坐标系中画出 ...

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

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

  7. EasyTouch5 之 Joystick 虚拟摇杆

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

  8. 《Cocos Creator游戏实战》虚拟摇杆实现

    虚拟摇杆实现 摇杆布局实现 摇杆功能实现 用摇杆控制主角 该功能已收录在Many Widgets插件中,使用Cocos Creator 3.x版本的小伙伴可以用该插件快速生成摇杆. 插件地址:http ...

  9. 360度虚拟摇杆控制机器人前进后退转弯(一)

    项目需求 最近做一个项目,要求使用虚拟摇杆控制机器人设备前进后退转弯,整个过程的思路不算复杂,写篇文章记录下大致思路 (1)黄色圆不动时候 小车速度为0 (2)拖动摇杆 拖动距离越大 小车速度越大 距 ...

最新文章

  1. guid linux 识别的分区表_Linux系统MBR和GPT分区的区别介绍
  2. vs增量链接、清单文件
  3. c语言虚函数是什么,C语言中什么函数不能声明为虚函数?
  4. 3.12 总结-深度学习-Stanford吴恩达教授
  5. vectorPoint points未声明的标识符
  6. iOS/Android自动化云测试工具iTestin 1.0发布
  7. Command line is too long. Shorten command line for Doc.generateAsciiDocs or
  8. Eigen教程(8)之Map类
  9. ImageView显示控制
  10. Win7-64位 Cygwin编译Redis
  11. java正则表达式yyyymmdd_java验证日期yyyyMMdd正则表达式,
  12. linux伊甸园,新手学堂:给Ubuntu系统配置Java开发环境-Linux伊甸园----Linux|Unix|新闻|下载|论坛|人才|教程|自由软件|...
  13. win10系统下office2003和office2016兼容
  14. 不可多求的压电式雨量传感器内部技术问答
  15. 32 任意项级数敛散性的判别法
  16. 性能测试:一个完整的性能测试过程
  17. 前端HTML调用jQuery库,属性操作:更换图片、添加字体样式(前端:HTML搭配jQuery系列教程六)
  18. softlayer iso_在SoftLayer云中启用地图和地理空间分析
  19. Mob之短信验证集成SMSSDK
  20. 线性代数导论35——线性代数全总结

热门文章

  1. Web前端学习html css(一)
  2. Java遍历指定目录或当前目录
  3. 【转】四年记——身在中小企业
  4. web servlce
  5. Jenkins安装svn插件并创建项目
  6. python爬虫——利用 session 处理登录状态 github 登录实例
  7. 【C++】右值引用、移动语义、完美转发(下篇)
  8. 下角标怎么打java_java 实现excel中上下角标处理实现原理
  9. jquery 插件 countdown.js 倒计时插件
  10. 基于MATLAB的红绿灯检测识别系统