1、前几篇文章介绍了很多 unity3D 引擎自身的一些问题, 今天我们在回到 IOS 设备上讨论一些触摸屏幕手势,本章的目标是通过触摸 iPhone 屏幕手势 实现模型左右的旋转,与模型的缩放。 出自狗刨学习网大家想一想模型的旋转,实际上是镜头的旋转。模型的缩放实际上是镜头 Z 轴方向的坐标。那么实现本章的内容只需要控制镜头的位置方可实现。我们在游戏场景中创建一些简单的模型做为参照物,插一句 “大家有谁知道 . FBX 的模型那里可以免费找到,我想在博文中加点游戏模型让场景更好看一些,可是苦于找不到有点郁闷,用公司的模型来写博文有觉得有点不合适”哇咔咔 ,如果有知道的哥们 不妨告诉我喔。啦啦啦。
2、 我们创建一个简单的游戏平面, 然后平面中放一个箱子做为旋转缩放的参照物。如下图所示,选中摄像机,给摄像机添加一个脚本名称为 Move. 脚本中有一个参数 Target,它的作用是设置摄像头旋转移动参照物,这里把一个箱子赋值给了 Target,那么左右滑动屏幕会发现箱子在旋转,两手缩放屏幕会发现箱子在放大与缩小。我们看看 Move 这条脚本,说明一下几个重要的 :这些方法都是系统自己调用的方法function Start () : 游戏启动以后只调用一次,可用于脚本的初始化操作,function Update ():Start() 方法调用结束以后每一帧都会调用,可以在这里更新游戏逻辑。fun
3、ction LateUpdate (): Start()方法调用结束以后每一帧都会调用,但是它是在 Update()调用完后调用。Move.js 完整代码1. /用于绑定参照物对象2. var target : Transform;3. /缩放系数4. var distance = 10.0;5. /左右滑动移动速度6. var xSpeed = 250.0;7. var ySpeed = 120.0;8. /缩放限制系数9. var yMinLimit = -20;10. var yMaxLimit = 80;11. /摄像头的位置12. var x = 0.0;13. var y = 0.
4、0;14. /记录上一次手机触摸位置判断用户是在左放大还是缩小手势15. private var oldPosition1 : Vector2;16. private var oldPosition2 : Vector2;17.18. /初始化游戏信息设置19. function Start () 20. var angles = transform.eulerAngles;21. x = angles.y;22. y = angles.x;23.24. / Make the rigid body not change rotation25. if (rigidbody)26. rigidbo
5、dy.freezeRotation = true;27. 28.29. function Update ()30. 31. /判断触摸数量 为单点触摸32. if(Input.touchCount = 1)33. 34. /触摸类型为移动触摸35. if(Input.GetTouch(0).phase=TouchPhase.Moved)36. 37. /根据触摸点计算 X 与 Y 位置38. x += Input.GetAxis(“Mouse X“) * xSpeed * 0.02;39. y -= Input.GetAxis(“Mouse Y“) * ySpeed * 0.02;40.41.
6、 42. 43.44. /判断触摸数量 为多点触摸45. if(Input.touchCount 1 )46. 47. /前两只手指触摸类型都为移动触摸48. if(Input.GetTouch(0).phase=TouchPhase.MovedInput.GetTouch(1).phase=TouchPhase.Moved)49. 50. /计算出当前两点触摸点的位置51. var tempPosition1 = Input.GetTouch(0).position;52. var tempPosition2 = Input.GetTouch(1).position;53. /函数返回真为放
7、大,返回假 为缩小54. if(isEnlarge(oldPosition1,oldPosition2,tempPosition1,tempPosition2)55. 56. /放大系数超过 3 以后不允许继续放大57. /这里的数据是根据我项目中的模型而调节的,大家可以自己任意修改58. if(distance 3)59. 60. distance -= 0.5;61. 62. else63. 64. /缩小洗漱返回 18.5 后不允许继续缩小65. /这里的数据是根据我项目中的模型而调节的,大家可以自己任意修改66. if(distance 360)115. angle -= 360;11
8、6. return Mathf.Clamp (angle, min, max);117. 复制代码在 Untiy3D 中运行用鼠标手势点击上看不到任何效果的,必需在 iPhone 真机上才可以触摸感应到效果喔 . 嘻嘻OK 接下来将 unity3d 导出成 Xcode 项目,导出的方法有谁还不会? 我的第一篇文章有说明噢。哇咔咔 然后运行项目只能在真机上运行哦。 看看我在 iPhone 上的截图。触摸 iPhone 屏幕镜头旋转与缩放以后的效果,这个图确实有点不太好截,我一会把项目的源代码工程下载地址贴上来,方便大家阅读与学习,哇咔咔镜头任意的旋转与缩放,还不错噢,大家快点来学习 unity3d 游戏开发吧,哇咔咔最后欢迎各位盆友可以和 MOMO 一起讨论 unity3d 游戏开发,哇咔咔 附上工程的下载地址,文件名称是zoom.unitypackage,下载完毕的盆友们双击就可以自动在 Unity3D 下打开它啦。然后导出成 iPhone 项目就可以运行了。今天回家装个 windows 7 最近对 wp7 的游戏开发有点兴趣哦 哦也回家钻研一下哇咔咔