`
stephen830
  • 浏览: 3016905 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

[雨松MOMO程序研究院]Unity3D研究院之控制模型移动旋转与碰撞(七)

 
阅读更多

 

[雨松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游戏开发,哇咔咔~~~

 

 

  • 大小: 63.6 KB
  • 大小: 64.2 KB
  • 大小: 20.7 KB
  • 大小: 88.8 KB
  • 大小: 372.2 KB
分享到:
评论

相关推荐

    雨松MOMO程序研究院

    FingerGestures研究院之初探Unity手势操作(一) iTween研究院之学习笔记Move移动篇(一) Android研究院之应用程序...Unity3D研究院之构建游戏框架与导出IOS项目(一) Unity3D视频开发教程之开始学习Unity(一)

    MOMO雨松的unity3d游戏开发

    2. **对象与组件**:Unity中的游戏对象(GameObject)是场景中的基本单元,它们可以包含一个或多个组件,如Transform(变换)用于位置、旋转和缩放,Mesh Renderer(网格渲染器)用于显示3D模型,Collider(碰撞器)...

    Unity3D游戏引擎-雨松MOMO原创文章

    Unity3D游戏引擎-雨松MOMO原创文章

    Unity3D 游戏引擎之IOS触摸屏手势控制镜头旋转与缩放

    雨松MOMO Unity3D 游戏开发系列博文之Unity3D 游戏引擎之IOS触摸屏手势控制镜头旋转与缩放,欢迎大家下载阅读,哇咔咔~~

    Unity3D游戏引擎教程-雨松MOMO原创文章

    关于Unity3D游戏引擎构建方面的知识,文章涵盖了游戏框架的构建、多点触摸、游戏世界的简单构建、3D游戏地形与基本元素的构建、脚本控制模型移动旋转与碰撞检测、iOS触摸屏手势控制、高级界面消息的发送与接收、...

    Unity3D游戏引擎-雨松MOMO原创

    Unity3D是一款由Unity Technologies开发的跨平台游戏引擎,广泛应用于2D、3D游戏、建筑可视化、实时模拟等领域。它支持各种游戏平台的开发,包括但不限于PC、移动设备、网页和游戏机。在本文中,我们将详细探讨Unity...

    Unity3D游戏引擎教程(雨松MOMO原创文章)

    - **控制模型移动旋转与碰撞**: - 通过编写物理相关的脚本来控制模型的动态行为。 - 包括碰撞检测、物理效果等。 - **iOS触摸屏手势控制镜头旋转与缩放**: - 针对iOS设备设计的手势识别脚本。 - 通过用户的...

    雨松MOMO安卓博客课程

    《雨松MOMO安卓博客课程》是一份精心整理的Android开发学习资源,包含了雨松MOMO博主的32篇文章精华。这个合集旨在为Android开发者,尤其是初学者提供一条系统化的学习路径,帮助他们深入理解Android开发的核心概念...

    Unity3D 游戏引擎之FBX模型的载入与人物行走动画的播放

    雨松MOMO Unity3D 游戏开发系列博文之Unity3D Unity3D 游戏引擎之FBX模型的载入与人物行走动画的播放,欢迎大家下载阅读,哇咔咔~~

    雨松MOMO安卓博客课程.rar

    《雨松MOMO安卓博客课程》是一套专注于Android开发的学习资源,旨在帮助开发者深入理解和掌握Android应用开发的各项技能。该课程可能包含了从基础到高级的各个层面,适合初学者和有一定经验的开发者进行自我提升。 ...

    【雨松MOMO】Android开发系列博文大合集总汇

    雨松MOMO游戏与软件开发大讲堂 大汇集 博文第一篇到博文第三十二篇所有Android开发博文大合集,以及所有博文中附带的源代码,一共将近50M,Android开发资源 ,给力推荐 。欢迎大家下载阅读,持续给力~~哇咔咔~~

    Unity3D 游戏引擎之IOS自定义游戏摇杆与飞机平滑的移动

    雨松MOMO Unity3D 游戏开发系列博文之Unity3D 游戏引擎之iOS自定义游戏摇杆与飞机平滑的移动,欢迎大家下载阅读,哇咔咔~~

    MOMO-雨松-安卓博客课程打包

    《MOMO-雨松-安卓博客课程打包》是一份集合了安卓开发基础知识与实践的珍贵资源包。这个压缩文件由“MOMO-雨松”这位在安卓开发领域有一定影响力的博主精心整理,旨在帮助学习者系统地掌握安卓应用开发的各项技能。...

    Unity3D脚本中文教程

    4. **Unity组件编程**:介绍如何通过脚本控制Unity的内置组件,如Transform(变换),用于移动、旋转和缩放对象;Rigidbody(刚体)和Collider(碰撞器)用于物理模拟;Camera(相机)用于渲染场景;以及Animator...

    Unity3d心得

    - **雨松MOMO个人网站**: 包含丰富的Unity开发教程和实例,网址: [http://www.xuanyusong.com/](http://www.xuanyusong.com/) #### 开发基础知识 Unity3D支持C#、JavaScript和Boo三种脚本语言,其中C#因其简洁、...

    Unity3D 游戏引擎之IOS高级界面发送消息与Unity3D消息的接收

    雨松MOMO Unity3D 游戏开发系列博文之Unity3D 游戏引擎之IOS高级界面发送消息与Unity3D消息的接收,欢迎大家下载阅读,哇咔咔~~ 转与缩放,欢迎大家下载阅读,哇咔咔~~

    51CTO下载-雨松MOMO安卓博客课程.rar

    《雨松MOMO安卓博客课程》是一份珍贵的学习资源,专为Android开发者设计,尤其适合初学者和希望深入理解游戏开发的程序员。这个压缩包集合了雨松MOMO在其博客中的各种教程和示例代码,涵盖了Android应用开发和游戏...

    unity3d和Eclipse协同开发 ,雨凇博客

    同时,描述提到了特定的文章“Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)”,意味着文章讲解了如何在Unity3D中调用Android平台的Java代码,尤其是在活动(Activity)的打开和参数传递方面。...

    Unity3D 游戏引擎之详解游戏开发音频的播放

    雨松MOMO Unity3D 游戏开发系列博文之Unity3D 游戏引擎之详解游戏开发音频的播放,欢迎大家下载阅读,哇咔咔~~

Global site tag (gtag.js) - Google Analytics