该实例是Unity实现在移动端通过触摸屏幕进行对飞机的移动和转向,用于学习Touch类的相关知识
public class AirControl:MonoBehaviour{private Transform m_transform;          //飞机实例public float speed = 500f;              //飞行速度private float rotationz = 0.0f;         //Z轴旋转量public float rotateSpeed_AxisZ=45f;     //绕Z轴旋转速度private Vector2 touchPosition;          //触摸点坐标private float screenWeight;             //屏幕宽度void Start () {m_transform = this.transform;this.gameObject.GetComponent<Rigidbody>().useGravity = false;   //取消重力screenWeight = Screen.width;        //获取屏幕宽度}   void Update () {//设置速度m_transform.Translate(new Vector3(0, 0, speed * Time.deltaTime));//设置飞机飞行速度m_transform.Find("propeller").transform.Rotate(new Vector3(0, 1000f * Time.deltaTime, 0));//设置螺旋桨旋转速度#region 控制转向rotationz = m_transform.eulerAngles.z;            //获取飞机对象绕Z轴的旋转量if (Input.touchCount > 0)   //当触摸数量大于0{for(int i=0;i<Input.touchCount;i++){Touch touch = Input.touches[i];     //实例化当前触摸点if(touch.phase==TouchPhase.Stationary||touch.phase==TouchPhase.Moved)   //如果手指在屏幕上没有移动或发生滑动时触发的事件{touchPosition = touch.position; //获取触摸点坐标if (touchPosition.x < screenWeight / 2)   //触摸点坐标的x如果在屏幕左半方{if (rotationz <= 45 || rotationz >= 315)       //判断飞机自身的旋转度{m_transform.Rotate(new Vector3(0, 0, rotateSpeed_AxisZ * Time.deltaTime), Space.Self);//使飞机自身旋转}m_transform.Rotate(new Vector3(0, -Time.deltaTime * 30, 0), Space.World);//飞机绕世界坐标整体旋转}else if (touchPosition.x >= screenWeight / 2)   //触摸点坐标的x如果在屏幕右半方{if (rotationz <= 45 || rotationz >= 315)      {m_transform.Rotate(new Vector3(0, 0, -rotateSpeed_AxisZ * Time.deltaTime), Space.Self);}m_transform.Rotate(new Vector3(0, Time.deltaTime * 30, 0), Space.World);}}else if (touch.phase == TouchPhase.Ended)//如果手指离开屏幕时触发的事件{BackToBlance();//返回至平衡状态}}}if (Input.touchCount == 0)//当没有手指触摸屏幕时,保持平衡状态{BackToBlance();}#endregion//判断是否为安卓设备if (Application.platform == RuntimePlatform.Android){if (Input.GetKeyDown(KeyCode.Escape))//如果按下设备的返回键则结束程序{Application.Quit();}}}#region 返回至平衡状态private void BackToBlance(){if (rotationz <= 180)       //右倾状态{if (rotationz - 0 <= 2)//微调:即角度距离平衡状态相差不超过2时进行微小转动{m_transform.Rotate(new Vector3(0, 0, Time.deltaTime * -1));}else{m_transform.Rotate(new Vector3(0, 0, Time.deltaTime * -40));}}else if(rotationz>180)      //左倾状态{if(360-rotationz<=2){m_transform.Rotate(new Vector3(0, 0, Time.deltaTime * 1));}else{m_transform.Rotate(new Vector3(0, 0, Time.deltaTime * 40));}}}#endregion
}

该脚本挂载在飞机物体上,主要涉及的知识:

Input.touchCount 指触摸数量,大约1s钟触摸着不放,touchCount增加50次左右,相当于Input.touches.Length。(只读)

Input.touches 一个Touch数组,代表着当前帧,所有手指在屏幕上的触碰状态与相关数据。(只读)

TouchPhase 指触摸相位,即触摸状态,对应Touch类中的phase属性,这些状态分别是:Began(手指已触摸屏幕)、Moved(手指在屏幕上移动)、Stationary(手指触摸屏幕,但并没有移动)、Ended(手指从屏幕上移开。这是一个触摸的最后状态)、Canceled(系统取消跟踪触摸,如用户把屏幕放到他脸上或超过五个接触同时发生。这是一个触摸的最后状态)。

transform.Rotate(new Vector3(),Space.Self/World) 控制物体旋转,Space参数是指参照的坐标系是自身的还是世界的

Unity实现在安卓手机上触屏控制转向--控制对象为飞机相关推荐

  1. Unity adb在安卓手机上查看日志

    一.我们用数据线把手机脸上电脑 如图红色标记的地方,连接好会显示你手机的屏幕还有你手机的型号,我用的是360手机助手,你也可以用别的手机助手 二.我们需要一个adb文件 你可以在群里下载,或者在网上下 ...

  2. android7 显示到pc,安卓手机上的画面怎么投屏到Win7电脑上?超详细投屏方法看这里!...

    软件大小: 1.89MB 软件版本: 1.4.9.18 软件类型: 手机相关 查看详情 直接下载 虽然说现在的智能手机的屏幕的尺寸越做越大,有的手机的屏幕尺寸甚至都可以跟平板电脑媲美了,但是尺寸再大的 ...

  3. 安卓手机如何投屏到电视上_手机如何投屏到电视上?小屏秒变大屏,追剧更享受!...

    作为一名上班族,如果你平时休息的时间非常喜欢宅在家里追剧的话,那么估计你在追剧时,都会使用手机,而放弃里家里的电视.但是你知道吗,其实利用家里的电视来追手机上的电视剧,要比你用手机直接追剧来的更爽快, ...

  4. 安卓手机如何投屏到电视上_关于安卓手机投屏电视问题的一个迂回解决方案

    之前一直用三星s10的smart view用屏幕镜像功能到电视来达到用电视看手机本地视频的目的,但是发现一段时间不接触手机的话,会关闭同步的视频画面显示而显示息屏显示(时间年月日等信息),而且无法关闭 ...

  5. 安卓手机上批量合并b站视屏并重命名

    现在b站缓存好的视屏是音视频分离的:output.mp4是合并好的的视屏: 视屏的信息在父路径下的entry.json文件里面,另外一个xml文件是弹幕信息 在手机上安装一个软件Termux 各个版本 ...

  6. android模糊后面视频,在安卓手机上怎么制作中间是横视频上下是模糊效果的竖视频?手机视频短片制作...

    注意此教程方案是『安卓手机端教程方案』 今天要介绍的是安卓手机视频短片制作软件,可以在安卓手机上制作手机视频短片哦,制作那种中间是横视频上下是模糊效果的竖视频哦~不是手机看的视频片,手机怎么下载好看的 ...

  7. android记事本添加图片功能,安卓手机上有什么便签app既可以写日记又可以添加照片?...

    原标题:安卓手机上有什么便签app既可以写日记又可以添加照片? 当前,有很多人一直保持着写日记的习惯,因为这样可以及时记录自己的成长轨迹,使得自己可以追寻到时光的记忆,但是我们记录日记的工具,却随着时 ...

  8. iphone录屏没内部声音_安卓手机如何录屏?手机高清录屏指南

    安卓手机如何录屏?师兄最近迷上了玩输出,输出战绩可以说是可圈可点.有时候想要炫耀下自己的战况,操作的时候截屏不方便.部分小伙伴的手机截图过后还需要编辑或者左滑图片,图片也不能展示自己优秀的操作!其实录 ...

  9. 电视android怎么解决,安卓手机怎么投屏到电视?用这3种方法可完美解决

    安卓手机怎么投屏到电视?用这3种方法可完美解决 2021年04月01日 17:47作者:网络编辑:王动 分享 有些用户觉得智能电视能看的资源太少,想把安卓手机里的资源投屏到电视上看,该怎么办呢?下面简 ...

最新文章

  1. 麒麟处理器是基于arm的吗_麒麟芯片是基于ARM构架,如果得不到授权华为还能活吗?...
  2. java 获取jsp路径_java如何获取jsp页面上传的文件路径
  3. Leetcode::Balanced Binary Tree
  4. python菜鸟excel教程-Python操作Excel的Xlwings教程(一)
  5. 数字图像基础(二进制图像、灰度图像、RGB图像、索引图像和多帧图像)
  6. SQL Server 2005中的分区表
  7. 【转】spin_lock、spin_lock_irq、spin_lock_irqsave区别
  8. Channel使用技巧
  9. 12.2日,第二次团队冲刺开始
  10. Object类的用法(二)
  11. Codeforces 484E Sign on Fence(是持久的段树+二分法)
  12. 助创cms众筹 php,【教程】助创cms众筹系统完整测试流程详解
  13. Facebook vs Chrome 关公秦琼的未来之战,互联网营销
  14. Luogu2481 SDOI2010 代码拍卖会 DP、组合
  15. mapgis6.7的放大缩小快捷键
  16. 自己制做python3.6精简绿色版
  17. python图像分析_python数字图像处理(一)图像的常见操作
  18. 网络划分之IP地址计算器
  19. unity fatal error in gc too many heap sections报错
  20. 12【不定式  动名词】to-infinitive gerund

热门文章

  1. 2018年长沙理工大学第十三届程序设计竞赛
  2. clint,offset,style的区别
  3. SpringBoot2.x整合JDBC及初始化data.sql和schema.sql脚本
  4. 万能表单解析工具在xheditor上传文件中的应用
  5. 对“小猿搜题”教育软件的作用分析
  6. 金融大数据平台是怎么构建的?
  7. Java开源企业信息化建设平台 O2OA V4.1660最版发布
  8. C#之CAD二次开发(16) 表格操作
  9. php实现投票 主要步骤,小菜鸟简单实现PHP网络刷投票程序
  10. [翻译] 在 Overleaf 中分享项目