[雨松MOMO程序研究院]Unity3D研究院之控制模型移动旋转与碰撞(七)
转载自 http://www.xuanyusong.com/archives/505
上一章介绍了模型的旋转与平移,本章介绍一些好玩的,通过按钮来控制模型的移动与镜头的跟随,脚本参数的传递。个人觉得Unity3D 这套游戏引擎真的很棒,它可以为开发者节省时间。用更多少的脚本,可以实现更多的功能。先赞一下,哇咔咔~废话不多说了,入正题!
首先在3D世界中创建一个箱子模型,然后添加一个脚本,命名为 js0绑定到这个箱子中。在添加一个脚本,命名为js1 ,同样绑定到这个箱子上,用来实现对象的创建与调用方法参数的传递 ~
var Control; 这里声明一个控制类的对象,用来进行参数的传递,调用方法。
Getomponent(js1): 得到脚本名称为js1的对象,这里把值赋给Control,就可以使用js1脚本中的方法了,下面的代码中通过这个对象调用模型的移动方法。
Input.GetKey(KeyCode): 这个方法返回一个Bool 判断当前按键是否被按下,当然这里只能运行在PC上才可以感应按钮,因为IOS的设备上没有按键,以后我会介绍在IOS上添加游戏摇杆的功能,本章我们先学习一下PC上的基本按钮响应。
下面代码
实现按下“W”控制物体向前
实现按下“S”控制物体向后
实现按下“A”控制物体向左平移
实现按下“D”控制物体向右平移
实现按下“Q”控制物体向左旋转
实现按下“E”控制物体向右旋转
js0.js 代码
//旋转移动速度 var Speed = 50; function Update() { //得到控制对象 var Control = GetComponent(js1); //判断按键 if(Input.GetKey(KeyCode.W)) { //前进 Control.ForWard(); }else if(Input.GetKey(KeyCode.S)) { //后退 Control.Back(); } if(Input.GetKey(KeyCode.A)) { //前左 Control.GLeft(); }else if(Input.GetKey(KeyCode.D)) { //后右 Control.GRight(); } if(Input.GetKey(KeyCode.Q)) { //左旋转 Control.leftRotate(Vector3.up *Time.deltaTime * -Speed); }else if(Input.GetKey(KeyCode.E)) { //右旋转 Control.RightRotate(Vector3.up *Time.deltaTime * Speed); } }
js1.js 代码
参数的传递可以使用obj进行传递,代码中我将旋转的角度做为参数传递到了js1.js中控制模型旋转。
Vector3 标示一个3D的向量单位,它可以标示模型的三个方向,这里根据旋转的角度与移动的向量设置它。
//前进速度 var Speed = 50; //前进 function ForWard() { transform.Translate(Vector3.forward * Time.deltaTime *Speed); } //后退 function Back() { transform.Translate(Vector3.forward * Time.deltaTime * -Speed); } //向左 function GLeft() { transform.Translate(Vector3.right * Time.deltaTime *-Speed); } //向右 function GRight() { transform.Translate(Vector3.right * Time.deltaTime * Speed); } //传递参数 //左旋转 function leftRotate(obj) { transform.Rotate(obj); } //右旋转 function RightRotate(obj) { transform.Rotate(obj); }
OK点击运行,通过按键我们可以正常的控制模型平移与旋转,但是现在有两个问题 1, 主摄像机不能跟随控制模型, 2 、模型可以横穿过山丘,感觉很假。下面我们解决这两个问题。
在Unity3D标准资源的脚本中系统帮我们写好了跟随脚本.如下图所示,点击Import Package – > Scripts 将系统脚本导入。

选中摄像机 点击Component – > Camera-Control – > Smoot Follow ,给主摄像机添加一个跟随脚本。

跟随脚本添加完以后,须要指定一个跟随的物体,下面红框内将跟随的物体Cube拖动进来,这里Cube就是我们上面控制的模 型,那么这样,摄像机将会一直在身后跟随我们控制的模型。下面是一些跟随的参数,设置 跟随的距离 高度等等,盆友们手动的修改一下运行游戏就可以看出来变化,。

控制物体的碰撞可以使用 选中模型, Component – > Physics – > Rigidbody 设置这个模型的重力碰撞。那么这样你控制的模型就不会穿过山丘,而是感应重力碰撞。

点击运行游戏,看看效果,控制箱子行走的同时,我们可以清晰的看出旁边的树木被物理碰撞所干扰,前后,左右,旋转 完全OK .大家快试试吧。哇咔咔~~

明天开始MOMO又要开始处理一部分iPhone 的界面图形化开发,Tomorrow is another day ,加油哇咔咔~ Unity3D 的世界中脚本还可以做很多事情,以后我在慢慢向各位道来~ 欢迎各位盆友可以和MOMO一起讨论Unity3D游戏开发,哇咔咔~~~
相关推荐
FingerGestures研究院之初探Unity手势操作(一) iTween研究院之学习笔记Move移动篇(一) Android研究院之应用程序...Unity3D研究院之构建游戏框架与导出IOS项目(一) Unity3D视频开发教程之开始学习Unity(一)
2. **对象与组件**:Unity中的游戏对象(GameObject)是场景中的基本单元,它们可以包含一个或多个组件,如Transform(变换)用于位置、旋转和缩放,Mesh Renderer(网格渲染器)用于显示3D模型,Collider(碰撞器)...
Unity3D游戏引擎-雨松MOMO原创文章
雨松MOMO Unity3D 游戏开发系列博文之Unity3D 游戏引擎之IOS触摸屏手势控制镜头旋转与缩放,欢迎大家下载阅读,哇咔咔~~
关于Unity3D游戏引擎构建方面的知识,文章涵盖了游戏框架的构建、多点触摸、游戏世界的简单构建、3D游戏地形与基本元素的构建、脚本控制模型移动旋转与碰撞检测、iOS触摸屏手势控制、高级界面消息的发送与接收、...
Unity3D是一款由Unity Technologies开发的跨平台游戏引擎,广泛应用于2D、3D游戏、建筑可视化、实时模拟等领域。它支持各种游戏平台的开发,包括但不限于PC、移动设备、网页和游戏机。在本文中,我们将详细探讨Unity...
- **控制模型移动旋转与碰撞**: - 通过编写物理相关的脚本来控制模型的动态行为。 - 包括碰撞检测、物理效果等。 - **iOS触摸屏手势控制镜头旋转与缩放**: - 针对iOS设备设计的手势识别脚本。 - 通过用户的...
《雨松MOMO安卓博客课程》是一份精心整理的Android开发学习资源,包含了雨松MOMO博主的32篇文章精华。这个合集旨在为Android开发者,尤其是初学者提供一条系统化的学习路径,帮助他们深入理解Android开发的核心概念...
雨松MOMO Unity3D 游戏开发系列博文之Unity3D Unity3D 游戏引擎之FBX模型的载入与人物行走动画的播放,欢迎大家下载阅读,哇咔咔~~
《雨松MOMO安卓博客课程》是一套专注于Android开发的学习资源,旨在帮助开发者深入理解和掌握Android应用开发的各项技能。该课程可能包含了从基础到高级的各个层面,适合初学者和有一定经验的开发者进行自我提升。 ...
雨松MOMO游戏与软件开发大讲堂 大汇集 博文第一篇到博文第三十二篇所有Android开发博文大合集,以及所有博文中附带的源代码,一共将近50M,Android开发资源 ,给力推荐 。欢迎大家下载阅读,持续给力~~哇咔咔~~
雨松MOMO Unity3D 游戏开发系列博文之Unity3D 游戏引擎之iOS自定义游戏摇杆与飞机平滑的移动,欢迎大家下载阅读,哇咔咔~~
《MOMO-雨松-安卓博客课程打包》是一份集合了安卓开发基础知识与实践的珍贵资源包。这个压缩文件由“MOMO-雨松”这位在安卓开发领域有一定影响力的博主精心整理,旨在帮助学习者系统地掌握安卓应用开发的各项技能。...
4. **Unity组件编程**:介绍如何通过脚本控制Unity的内置组件,如Transform(变换),用于移动、旋转和缩放对象;Rigidbody(刚体)和Collider(碰撞器)用于物理模拟;Camera(相机)用于渲染场景;以及Animator...
- **雨松MOMO个人网站**: 包含丰富的Unity开发教程和实例,网址: [http://www.xuanyusong.com/](http://www.xuanyusong.com/) #### 开发基础知识 Unity3D支持C#、JavaScript和Boo三种脚本语言,其中C#因其简洁、...
雨松MOMO Unity3D 游戏开发系列博文之Unity3D 游戏引擎之IOS高级界面发送消息与Unity3D消息的接收,欢迎大家下载阅读,哇咔咔~~ 转与缩放,欢迎大家下载阅读,哇咔咔~~
《雨松MOMO安卓博客课程》是一份珍贵的学习资源,专为Android开发者设计,尤其适合初学者和希望深入理解游戏开发的程序员。这个压缩包集合了雨松MOMO在其博客中的各种教程和示例代码,涵盖了Android应用开发和游戏...
同时,描述提到了特定的文章“Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)”,意味着文章讲解了如何在Unity3D中调用Android平台的Java代码,尤其是在活动(Activity)的打开和参数传递方面。...
雨松MOMO Unity3D 游戏开发系列博文之Unity3D 游戏引擎之详解游戏开发音频的播放,欢迎大家下载阅读,哇咔咔~~