Unity实现虚拟摇杆效果

 更新时间:2020年04月14日 14:25:52   作者:糟糕点师  
这篇文章主要为大家详细介绍了Unity实现虚拟摇杆效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Unity实现虚拟摇杆效果的具体代码,供大家参考,具体内容如下

首先添加两者图片

从左到右分别是Back和Front

将Front放到Back中心
在Front身上添加脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;//导入命名空间

public class JoyStick : MonoBehaviour,IPointerDownHandler,IPointerUpHandler {//实现接口

 private bool isTouched = false;//标志位,用于标示值是否拖拽按钮
 private static float h = 0;
 private static float v = 0;//这两者用于表示水平(竖直)方向按钮移动的值,相当于通过Input.GetAxis("Horizontal");Input.GetAxis("Vertical");
 [SerializeField] private Vector2 joystickPivot;//按钮中心位置在世界坐标中的值
 [SerializeField] private float radius;//按钮的半径(决定了按钮的活动范围)

 // Update is called once per frame
 void Update () {
 if (isTouched)
 {
  Vector2 mouPos = Input.mousePosition;
  mouPos -= joystickPivot;//将鼠标位置转换为本地坐标
  if (Vector2.Distance(mouPos,Vector2.zero)>=radius)//如果鼠标移动超出范围,将图片放到边缘
  {
  mouPos = mouPos.normalized*radius;
  }
  transform.localPosition = mouPos;
  h = mouPos.x/radius;
  v = mouPos.y/radius;

 }
 }

 public void OnPointerDown(PointerEventData eventData)
 {
 isTouched = true;
 }

 public void OnPointerUp(PointerEventData eventData)
 {
 isTouched = false;
 h = 0;
 v = 0;//不拖拽时二者为0
 transform.localPosition = Vector3.zero;//让按钮返回中心魏智
 }
}

对于代码中的h,v就是我们操作遥感时水平(竖直)方向获取的值(0-1),其他脚本获取这两个静态变量的值就可以实现对自身物体的移动了。

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

相关文章

  • Unity Shader实现水波纹效果

    Unity Shader实现水波纹效果

    这篇文章主要为大家详细介绍了Unity Shader实现水波纹效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • C#实现数字华容道游戏

    C#实现数字华容道游戏

    这篇文章主要为大家详细介绍了C#实现数字华容道游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • C# 操作XML文档 使用XmlDocument类方法

    C# 操作XML文档 使用XmlDocument类方法

    对于很大的XML文档,可以使用XmlReader类来读取。因为XmlReader使用Steam(流)来读取文件,所以不会对内存造成太大的消耗。下面就来看一下如何使用XmlDocument类,需要的朋友可以参考下
    2012-11-11
  • asp.net中调用oracle存储过程的方法

    asp.net中调用oracle存储过程的方法

    存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数来执行它,下面给大家介绍下asp.net中调用oracle存储过程的方法,需要的朋友可以参考下
    2015-08-08
  • C#调用C动态链接库的实现

    C#调用C动态链接库的实现

    动态链接库是不能直接执行的,也不能接收消息,它只是一个独立的文件,本文主要介绍了C#调用C动态链接库的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • 深入分析C#键盘勾子(Hook),屏蔽键盘活动的详解

    深入分析C#键盘勾子(Hook),屏蔽键盘活动的详解

    本篇文章是对C#键盘勾子(Hook),屏蔽键盘活动进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C#实现二叉排序树代码实例

    C#实现二叉排序树代码实例

    今天小编就为大家分享一篇关于C#实现二叉排序树代码实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • C#之关于Base64简单加密与解密方式

    C#之关于Base64简单加密与解密方式

    这篇文章主要介绍了C#之关于Base64简单加密与解密方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • c#完美截断字符串代码(中文+非中文)

    c#完美截断字符串代码(中文+非中文)

    c#完美截断字符串代码(中文+非中文),需要的朋友可以参考下
    2012-08-08
  • Unity实现俄罗斯方块游戏

    Unity实现俄罗斯方块游戏

    这篇文章主要为大家详细介绍了Unity实现俄罗斯方块游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06

最新评论