欢迎来到天天文库
浏览记录
ID:38796279
大小:506.50 KB
页数:8页
时间:2019-06-19
《unity3d游戏开发之控制模型移动旋转与碰撞》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、上一章介绍了模型的旋转与平移,本章介绍一些好玩的,通过按钮来控制模型的移动与镜头的跟随,脚本参数的传递。个人觉得unity3D这套游戏引擎真的很棒,它可以为开发者节省时间。用更多少的脚本,可以实现更多的功能。先赞一下,哇咔咔~废话不多说了,入正题! 首先在3D世界中创建一个箱子模型,然后添加一个脚本,命名为 js0绑定到这个箱子中。在添加一个脚本,命名为js1,同样绑定到这个箱子上,用来实现对象的创建与调用方法参数的传递~ 出自狗刨学习网 varControl; 这里声明一个控制
2、类的对象,用来进行参数的传递,调用方法。 Getomponent(js1):得到脚本名称为js1的对象,这里把值赋给Control,就可以使用js1脚本中的方法了,下面的代码中通过这个对象调用模型的移动方法。 Input.GetKey(KeyCode):这个方法返回一个Bool判断当前按键是否被按下,当然这里只能运行在PC上才可以感应按钮,因为IOS的设备上没有按键,以后我会介绍在IOS上添加游戏摇杆的功能,本章我们先学习一下PC上的基本按钮响应。 下面代码 实现按下“W”
3、控制物体向前 实现按下“S”控制物体向后 实现按下“A”控制物体向左平移 实现按下“D”控制物体向右平移 实现按下“Q”控制物体向左旋转 实现按下“E”控制物体向右旋转 js0.js代码1.//旋转移动速度2.varSpeed=50;3.4.//控制对象5.varControl;6.7.functionUpdate()8.{9. //得到控制对象10. Control=GetComponent(js1);11.12. //判断按键13.14. if(In
4、put.GetKey(KeyCode.W))15. {16. //前进17. Control.ForWard();18.19. }elseif(Input.GetKey(KeyCode.S)) 20. {21. //后退22. Control.Back();23. }1.2. if(Input.GetKey(KeyCode.A))3. {4. //前左5. Control.GLeft();6.7. }elseif(
5、Input.GetKey(KeyCode.D)) 8. {9. //后右10. Control.GRight();11. }12.13. if(Input.GetKey(KeyCode.Q))14. {15. //左旋转16.17. Control.leftRotate(Vector3.up*Time.deltaTime*-Speed);18.19. }elseif(Input.GetKey(KeyCode.E))20. {21. //右旋转22.
6、 Control.RightRotate(Vector3.up*Time.deltaTime*Speed);23.24. }25.26.}复制代码 js1.js代码 参数的传递可以使用obj进行传递,代码中我将旋转的角度做为参数传递到了js1.js中控制模型旋转。 Vector3标示一个3D的向量单位,它可以标示模型的三个方向,这里根据旋转的角度与移动的向量设置它。 //前进速度varSpeed=50;//前进functionForWard(){transform.
7、Translate(Vector3.forward*Time.deltaTime*Speed);}//后退functionBack(){transform.Translate(Vector3.forward*Time.deltaTime*-Speed);}//向左functionGLeft(){transform.Translate(Vector3.right*Time.deltaTime*-Speed);}//向右functionGRight(){transform.Translate(Vect
8、or3.right*Time.deltaTime*Speed);}//传递参数//左旋转functionleftRotate(obj){transform.Rotate(obj);}//右旋转functionRightRotate(obj){transform.Rotate(obj);}1.//前进速度2.varSpeed=50;3.4.//前进5.functionForWard()6.{7. transform.Translate(Vector3.forward*Time.de
此文档下载收益归作者所有