位置: 编程技术 - 正文

Unity3D 双摇杆 c# JoyStick 实现自己的双摇杆(unity双击)

编辑:rootadmin
欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,【狗刨学习网】unity极致学院,致力于打造业内unity3d培训、学习第一品牌。   Untiy3D 官方摇杆脚本只能完成一个摇杆,要实现双摇杆比较费劲  现在我吧我废了一通宵的结果共享给大家  1.双摇杆是用来控制第一人称控制器的,但第一人称控制器右js和c#有的地方不能通用,所以首先要将所有将本变为c#脚本    2.建立Joystick.cs脚本,我也在代码中加了注释方便大家理解  3.将GUI摇杆纹理放入脚本,并将脚本关联与第一人称控制器  4.修改第一人称控制器脚本 /**  * *JoyStick.cs  */  using UnityEngine;  using System.Collections;  //创建枚举类型,可在加载脚本的实体上选择是左摇杆还是右摇杆  public enum JoyStickType  {  leftJoyStick,  rightJoyStick  }  //脚本JoyStick类  public class JoyStick : MonoBehaviour   {  public JoyStickType joyStickType; //摇杆类型,左摇杆还是右摇杆  private Vector2 centerPos; //摇杆的中心点位置,屏幕坐标  public GUITexture centerBall; //球型摇杆  public float joyStickRadius; //摇杆移动范围的半径  private Vector2 position; //摇杆要传递出去的参数,就靠他控制移动旋转  private int lastFingerID = -1; //最后一次触摸的手指id  private bool centerBallMoving = false; //球型摇杆移动开关  //加载时运行方法  void Start ()   {  //为了让摇杆适配不同分辨率屏幕,设置大小和坐标  centerBall.transform.localScale = new Vector3( centerBall.pixelInset.size.x / Screen.width, centerBall.pixelInset.size.y / Screen.height,0);  //因为GUI纹理锚点都是左下角0,0 所以为了让两边摇杆对称摇杆坐标向-x方向移动半个纹理宽的屏幕距离(屏幕距离通过 纹理宽:屏幕分辨率宽 获得)  centerBall.transform.position = new Vector3 (centerBall.transform.position.x - centerBall.pixelInset.size.x/2/Screen.width,  centerBall.transform.position.y,0);  //将摇杆坐标赋给作为摇杆的中心,以后用来复位摇杆用  centerPos = centerBall.transform.position;  }  //每帧运行方法  void Update ()   {  //调用摇杆方法  JoyStickController();  }  //摇杆方法  void JoyStickController()  {  int count = Input.touchCount; //获取触摸点的数量  for (int i = 0; i count; i&#;&#;) //逐个分析触摸点的操作  {  Touch touch = Input.GetTouch(i); //获取当前处理的触摸点  //将当前的触摸坐标转换为屏幕坐标  Vector2 currentTouchPos = new Vector2(touch.position.x/Screen.width - centerBall.pixelInset.size.x/2/Screen.width, touch.position.y/Screen.height);  Vector2 temp = currentTouchPos - centerPos; //得到方向向量temp(触摸的位置和摇杆的坐标差)  if (centerBall.HitTest(touch.position)) //判断是否触摸点在要干范围之内  {   if (temp.magnitude joyStickRadius) //如果方向向量temp的长度没有超出摇杆的半径,temp.magnitude为求坐标差的距离,及两点间的距离  {  lastFingerID = touch.fingerId; //记录该触摸的id  centerBallMoving = true; //摇杆移动开关打开  }   }   //若中心球移动开关打开,摇杆中心球就会跟随手指移动。但需要加以限制,当手指触摸没有超出摇杆的圆形区域时,中心球完全跟随手指触摸;  //当手指触摸超出圆形区域时,中心球处于触摸位置和摇杆中心点所形成的方向上并且不能超出半径  if (touch.fingerId == lastFingerID centerBallMoving)  {  if (temp.magnitude joyStickRadius) //如果手指触摸没有超出摇杆的圆形区域,即摇杆半径,摇杆中心球的位置一直跟随手指  {  centerBall.transform.position = new Vector3 (currentTouchPos.x,currentTouchPos.y,0); //设置摇杆的坐标等于触点的坐标  }  else //超出半径  {  Vector2 temp2 = temp; //定义临时变量temp2  temp2.Normalize(); //将temp2标准化  //设置摇杆坐标位置不超过半径  centerBall.transform.position = new Vector3((joyStickRadius * temp2 &#; centerPos).x, (joyStickRadius * temp2 &#; centerPos).y, 0);  }  if (temp.x = 0)  {  //一下为示例代码:控制旋转方向,主要利用Vector2.Angle(temp, new Vector2(0, 5))得到角度并利用  //initialization_script.current_player_tank_script.BodyRotation(Vector2.Angle(temp, new Vector2(0, 5)));  }  if (temp.x 0)  {  //一下为示例代码:控制旋转方向,主要利用Vector2.Angle(temp, new Vector2(0, 5))得到角度并利用  //initialization_script.current_player_tank_script.BodyRotation(-1 * Vector2.Angle(temp1, new Vector2(0, 5)));  }  //控制移动的函数或者控制开火的函数,假设左摇杆控制移动,右摇旋转  switch(joyStickType)  {  case JoyStickType.leftJoyStick:  position = temp*; //移动需坐标  break;  case JoyStickType.rightJoyStick:  position = temp*; //旋转需坐标  break;  }  //当释放触摸的时候中心球位置重置  if (touch.phase == TouchPhase.Ended || touch.phase == TouchPhase.Canceled)  {  centerBall.transform.position = new Vector3(centerPos.x, centerPos.y, 0); //摇杆复位  temp = new Vector2(0,0); //距离差为0  position = temp; //赋&#;0给需要坐标已停止动作  centerBallMoving = false; //设置不能移动摇杆  lastFingerID = -1; //清楚本次手指触摸id  }  }  }  }  //获取传递坐标方法  public Vector2 getPositions()  {  return position;  }  } 更多内容,请访问【狗刨学习网】unity极致学院

推荐整理分享Unity3D 双摇杆 c# JoyStick 实现自己的双摇杆(unity双击),希望有所帮助,仅作参考,欢迎阅读内容。

Unity3D 双摇杆 c# JoyStick 实现自己的双摇杆(unity双击)

文章相关热门搜索词:unity2d摇杆,unity2d摇杆,unity虚拟摇杆控制人物移动,unity双击,unity摇杆控制方向,unity摇杆控制方向,unity2d摇杆,unity摇杆控制方向,内容如对您有帮助,希望把文章链接给更多的朋友!

Unity3D 动画回调方法 欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,【狗刨学习网】unity极致学

浅析游戏引擎的资源管理机制 欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,【狗刨学习网】unity极致学

U3d学习-使用Unity3D开发2D游戏(上) 欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,【狗刨学习网】unity极致学

标签: unity双击

本文链接地址:https://www.jiuchutong.com/biancheng/369401.html 转载请保留说明!

上一篇:Unity3D优化总结(unity hud优化)

下一篇:Unity3D 动画回调方法(unity动画调速度)

  • 税局退个税手续费税率
  • 个税预扣预缴扣除项目有哪些
  • 税务师考试咨询电话
  • 预付加油充值卡可以报销吗
  • 以前年度多计收入多交税怎么处理
  • 公户结算卡最多可以拿多少现金
  • 实收资本增加印花税税目
  • 电子税务局怎么注册
  • 分期付款方式购入货物会计分录
  • 房地产企业可以贷款吗
  • 销售自己使用过的物品免税吗
  • 差额征税的财税处理怎么做?
  • 高新企业如何结转成本
  • 房地产公司苗木账务处理
  • 收到客户银行按时到账
  • 企业安全生产费用提取标准 最新
  • 耕地占用税如何做账
  • 投资收益所得税税前扣除
  • 企业所得税税前不得扣除的项目
  • 不应计入税金及附加的有哪些
  • 电子发票收款人和复核人可以是一个人吗
  • 长期股权投资年度损益影响金额包括什么
  • 无票收入可以存钱吗
  • 报销差旅费涉及的会计科目
  • windows11怎么设置我的电脑
  • 冲抵备用金
  • 信息技术服务费发票
  • 企业所得税可以税前扣除的
  • 什么是票据权利?票据权利的内容有哪些
  • 研发费用没有发票可以加计扣除吗
  • linux常用命令make
  • 宏基笔记本一键恢复系统
  • 消防设施费用怎么入账
  • 资产减值准备为什么在贷方
  • 出租经营的开发产品应视为企业的
  • 耕地开垦费应计入哪个会计科目
  • php+mysql+jquery实现简易的检索自动补全提示功能
  • php生成随机字母数字代码
  • PHP使用pear实现mail发送功能 windows环境下配置pear
  • 小规模未开票收入如何申报增值税
  • 前端面试题什么是网络协议
  • php设计模式六大原则
  • 选择相邻兄弟需要使用下列哪个符号
  • 非公司员工可以举报公司不交社保吗
  • 开票一定要确认发票吗
  • ubuntu下安装windows
  • 清包工可以有一部分小料吗
  • 预付账款购进原材料怎么做账
  • 子公司注销时的账务处理
  • 社保缴费基数和医保缴费基数一样吗
  • 开办费的最新账务处理会计视野
  • 无形资产摊销如何操作
  • 收到广告费分录
  • 增值税申报表中期初未缴税额指什么
  • 缴纳上月附加税怎么做分录
  • 税法规定固定资产最低折旧年限
  • mysql tmp_table_size和max_heap_table_size大小配置
  • windows许可证即将过期怎么办知乎
  • windows pe无法启动怎么办
  • 迅速修复系统漏洞的方法
  • Windows Server core的便捷操作和远程管理
  • linux i
  • ubuntu虚拟机apt安装tools
  • 用U盘安装苹果系统
  • 更改mac地址值
  • 电子书进不去系统原因
  • jquery 使用
  • cocos2dx在不同安卓机型下scrollview裁剪失败
  • android 自定义
  • 详解16型人格
  • vue+node+webpack环境搭建教程
  • linux echo echo
  • linux的sed -i
  • nodejs常用内置模块
  • jQuery ajax应用总结
  • 小规模纳税人可以开13%的发票吗
  • 房产税的计税依据及税率
  • 同比减少怎么计算出来
  • 辽宁网上税务
  • 怎样在网上税务局个人发票能开10万以上?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设