Unity3D 游戏引擎之控制模型移动旋转与碰撞
来源:互联网 发布:互联网公平台用java 编辑:程序博客网 时间:2024/06/06 08:33
上一章介绍了模型的旋转与平移,本章介绍一些好玩的,通过按钮来控制模型的移动与镜头的跟随,脚本参数的传递。个人觉得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 代码
[代码]js代码:
01//旋转移动速度
02var Speed = 50;
03
04//控制对象
05var Control;
06
07function Update()
08{
09 //得到控制对象
10 Control = GetComponent(js1);
11
12 //判断按键
13
14 if(Input.GetKey(KeyCode.W))
15 {
16 //前进
17 Control.ForWard();
18
19 }else if(Input.GetKey(KeyCode.S))
20 {
21 //后退
22 Control.Back();
23 }
24
25 if(Input.GetKey(KeyCode.A))
26 {
27 //前左
28 Control.GLeft();
29
30 }else if(Input.GetKey(KeyCode.D))
31 {
32 //后右
33 Control.GRight();
34 }
35
36
37
38 if(Input.GetKey(KeyCode.Q))
39 {
40 //左旋转
41
42 Control.leftRotate(Vector3.up *Time.deltaTime * -Speed);
43
44 }else if(Input.GetKey(KeyCode.E))
45 {
46 //右旋转
47 Control.RightRotate(Vector3.up *Time.deltaTime * Speed);
48
49 }
50
51}
js1.js 代码
参数的传递可以使用obj进行传递,代码中我将旋转的角度做为参数传递到了js1.js中控制模型旋转。
Vector3 标示一个3D的向量单位,它可以标示模型的三个方向,这里根据旋转的角度与移动的向量设置它。
[代码]js代码:
01//前进速度
02var Speed = 50;
03
04//前进
05function ForWard()
06{
07 transform.Translate(Vector3.forward * Time.deltaTime *Speed);
08}
09
10//后退
11function Back()
12{
13 transform.Translate(Vector3.forward * Time.deltaTime * -Speed);
14}
15
16
17//向左
18function GLeft()
19{
20 transform.Translate(Vector3.right * Time.deltaTime *-Speed);
21}
22
23//向右
24function GRight()
25{
26 transform.Translate(Vector3.right * Time.deltaTime * Speed);
27}
28
29
30
31
32//传递参数
33
34//左旋转
35function leftRotate(obj)
36{
37 transform.Rotate(obj);
38}
39
40//右旋转
41function RightRotate(obj)
42{
43 transform.Rotate(obj);
44}
OK点击运行,通过按键我们可以正常的控制模型平移与旋转,但是现在有两个问题 1, 主摄像机不能跟随控制模型, 2 、模型可以横穿过山丘,感觉很假。下面我们解决这两个问题。
在Unity3D标准资源的脚本中系统帮我们写好了跟随脚本.如下图所示,点击Import Package - > Scripts 将系统脚本导入。
选中摄像机 点击Component - > Camera-Control - > Smoot Follow ,给主摄像机添加一个跟随脚本。
跟随脚本添加完以后,须要指定一个跟随的物体,下面红框内将跟随的物体Cube拖动进来,这里Cube就是我们上面控制的模型,那么这样,摄像机将会一直在身后跟随我们控制的模型。下面是一些跟随的参数,设置 跟随的距离 高度等等,盆友们手动的修改一下运行游戏就可以看出来变化,。
控制物体的碰撞可以使用 选中模型, Component - > Physics - > Rigidbody 设置这个模型的重力碰撞。那么这样你控制的模型就不会穿过山丘,而是感应重力碰撞。
点击运行游戏,看看效果,控制箱子行走的同时,我们可以清晰的看出旁边的树木被物理碰撞所干扰,前后,左右,旋转 完全OK .大家快试试吧。哇咔咔~~
0 0
- Unity3D 游戏引擎之控制模型移动旋转与碰撞
- Unity3D 游戏引擎之控制模型移动旋转与碰撞(七)
- Unity3D研究院之控制模型移动旋转与碰撞(七)
- Unity3D For iPhone游戏引擎之使用脚本实现模型平移与模型旋转(六)
- Unity3D游戏场景之控制模型移动、旋转和相机跟随
- Unity3D 游戏引擎之脚本实现模型的平移与旋转(六)
- Unity3D 游戏引擎之IOS触摸屏手势控制镜头旋转与缩放(八)
- Unity3D 游戏引擎之IOS自定义游戏摇杆与飞机平滑的移动(十一)
- Unity3D 游戏引擎之感应IOS设备旋转与iPhone键盘事件(十六)
- Unity3D 游戏引擎之感应IOS设备旋转与iPhone键盘事件
- Unity通过射线碰撞选择模型,然后控制模型的移动、旋转、缩放等动作
- unity3d控制camera移动旋转
- Unity3D 游戏引擎之FBX模型的载入与人物行走动画的播放(十二)
- [Unity3D]Unity3D 游戏开发之碰撞检测
- [Unity3D]Unity3D 游戏开发之碰撞检测
- 【Unity3D入门教程】物理引擎之碰撞解析
- Unity3D游戏场景之鼠标点击地面控制人物移动
- Unity3D 控制物体移动、旋转、缩放
- CoreAnimation编程指南(五)图层内容
- 如何在改版的spring官网下载jar包问题
- poj1149
- perl的变量、数组、哈希1
- 收集的java一些资料
- Unity3D 游戏引擎之控制模型移动旋转与碰撞
- hdu 1016 Prime Ring Problem
- 一、通过发送系统广播让android关机、重启
- CoreAnimation编程指南(六)动画
- C#笔记 垃圾回收garbage collection
- ROS学习手记12 -- ROS问题检测工具roswtf
- Activity Intent Flags及Task相关属性
- 我的书单和简单书评(持续更新)
- properties操作。