Unity3D新手教学,让你十二小时,从入门到掌握!(二)
2015-08-08 19:09
621 查看
继续上一讲的内容,首先呢,
为了接下来要做的小游戏,在这里我要小小的修改一下移动的代码。
这样写是为了便于以后可以自由的扩展功能,而且便于管理。
那么,现在我们要为下面要做的游戏做一个小小的策划。
首先。我们要做一个3D版的是男人就下一百层。
第二。我们需要三个可以跳跃的方块:向左移动的、向右移动的、不动的。
第三。为了增加游戏难度,我们要设置方块只能停留数秒就消失。
第四。可移动的方块踩到后就要停止运动。
第五。人物没有跳跃能力,只能前后左右。
OK,策划暂时就是这样,那么,我们就从方块开始入手。
三个方块,不动的方块我们就用现在的地板为模型,Ctrl+D复制出来一个,然后改名为StaticCube。然后接着复制出两个,分别命名为LeftCube、RightCube。
将这些方块按阶梯式布局,以便测试,然后运行游戏,可以看到,Player下去以后就再也上不来了。2333333
![](http://img.blog.csdn.net/20150808185557390)
现在,我们开始让木块动起来。
那么,木块的代码我们要怎么写?总不会写两个吧?向左一个单独的代码,向右一个单独的代码?
在我们没有更好的思路之前,先按着这个思路我们继续进行。。。
新建两个C#脚本,分别命为LeftCubeMove与RightCubeMove。在这里写Cube的移动代码。以Left为例:
然后将这两个脚本分别托给相应的Cube,运行游戏,可以看到Cube自己开始移动了。
那么我们怎样才能做到Player落在Cube上,Cube就停止移动呢?
所以问题来了,我们怎样判断Player是否落在Cube上了呢?
在这里我为大家做个解释:这就好比我在背后打你一拳,你并没看到,但是你知道有人打你,你为什么知道有人打你呢?因为你能感觉到,你是一个具有感觉能力的人。
所以,我们要让Cube也有具有感觉,那就是为Cube添加碰撞器。
在我们新建Cube的时候,Unity会自动为Cube添加一个Box Collider,
那么我们需要做的就是将Is Trigger选上,这个是触发器。
![](http://img.blog.csdn.net/20150808190137856)
至于如何检测碰撞,我会在下一讲继续为大家讲解。
在这一讲结束前,我来教大家一个高大上的投影调法。
首先点击我们的光源:Directional light,然后右边有一个Light的选项面板,可以看到有Shadow Type的选项,这个的意思是阴影类型。
将他设置为:Soft Shadows
![](http://img.blog.csdn.net/20150809125740785)
然后将下面联动出来的Resolution(分辨率)设置为Very Hight Resolution(非常高的分辨率)。
![](http://img.blog.csdn.net/20150809125819994)
然后大家就可以看到非常清晰的影子了。
大家也可以在设计师图中找到光源,去调整光的投射角度,可以更好的找到游戏的体验效果。
好了,这一讲到此结束,谢谢大家的关注。
第一讲链接:Unity3D新手教学,让你十二小时,从入门到掌握!(一)
**联系方式
QQ:531193915
E-Mail:13351241296@163.com**
为了接下来要做的小游戏,在这里我要小小的修改一下移动的代码。
[code]public class PlayerMove : MonoBehaviour { //定义移动的速度 public float MoveSpeed = 8f; void Start () { } void Update () { //如果按下W或上方向键 if(Input.GetKey(KeyCode.W)||Input.GetKey(KeyCode.UpArrow)) { MoveForward(); } if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow)) { MoveBack(); } if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow)) { MoveLeft(); } if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow)) { MoveRight(); } } void MoveForward() { this.transform.Translate(Vector3.forward * MoveSpeed * Time.deltaTime); } void MoveBack() { this.transform.Translate(Vector3.back * MoveSpeed * Time.deltaTime); } void MoveLeft() { this.transform.Translate(Vector3.left * MoveSpeed * Time.deltaTime); } void MoveRight() { this.transform.Translate(Vector3.right * MoveSpeed * Time.deltaTime); } }
这样写是为了便于以后可以自由的扩展功能,而且便于管理。
那么,现在我们要为下面要做的游戏做一个小小的策划。
首先。我们要做一个3D版的是男人就下一百层。
第二。我们需要三个可以跳跃的方块:向左移动的、向右移动的、不动的。
第三。为了增加游戏难度,我们要设置方块只能停留数秒就消失。
第四。可移动的方块踩到后就要停止运动。
第五。人物没有跳跃能力,只能前后左右。
OK,策划暂时就是这样,那么,我们就从方块开始入手。
三个方块,不动的方块我们就用现在的地板为模型,Ctrl+D复制出来一个,然后改名为StaticCube。然后接着复制出两个,分别命名为LeftCube、RightCube。
将这些方块按阶梯式布局,以便测试,然后运行游戏,可以看到,Player下去以后就再也上不来了。2333333
现在,我们开始让木块动起来。
那么,木块的代码我们要怎么写?总不会写两个吧?向左一个单独的代码,向右一个单独的代码?
在我们没有更好的思路之前,先按着这个思路我们继续进行。。。
新建两个C#脚本,分别命为LeftCubeMove与RightCubeMove。在这里写Cube的移动代码。以Left为例:
[code]public class LeftCubeMove : MonoBehaviour { //定义Cube的初始移动速度 public float CubeSpeed = 1f; void Start () { } void Update () { //使Cube的移动速度每一帧都增加 CubeSpeed += 0.1f; //使Cube以CubeSpeed为速度向左移动 this.transform.Translate(Vector3.left * CubeSpeed * Time.deltaTime); } }
然后将这两个脚本分别托给相应的Cube,运行游戏,可以看到Cube自己开始移动了。
那么我们怎样才能做到Player落在Cube上,Cube就停止移动呢?
所以问题来了,我们怎样判断Player是否落在Cube上了呢?
在这里我为大家做个解释:这就好比我在背后打你一拳,你并没看到,但是你知道有人打你,你为什么知道有人打你呢?因为你能感觉到,你是一个具有感觉能力的人。
所以,我们要让Cube也有具有感觉,那就是为Cube添加碰撞器。
在我们新建Cube的时候,Unity会自动为Cube添加一个Box Collider,
那么我们需要做的就是将Is Trigger选上,这个是触发器。
至于如何检测碰撞,我会在下一讲继续为大家讲解。
在这一讲结束前,我来教大家一个高大上的投影调法。
首先点击我们的光源:Directional light,然后右边有一个Light的选项面板,可以看到有Shadow Type的选项,这个的意思是阴影类型。
将他设置为:Soft Shadows
然后将下面联动出来的Resolution(分辨率)设置为Very Hight Resolution(非常高的分辨率)。
然后大家就可以看到非常清晰的影子了。
大家也可以在设计师图中找到光源,去调整光的投射角度,可以更好的找到游戏的体验效果。
好了,这一讲到此结束,谢谢大家的关注。
第一讲链接:Unity3D新手教学,让你十二小时,从入门到掌握!(一)
**联系方式
QQ:531193915
E-Mail:13351241296@163.com**
相关文章推荐
- 基于unity的直升机模拟设计
- Unity5.0 EventSystem事件系统的详细说明
- 于Unity3D动态创建对象和创建Prefab三种方式的原型对象
- Unity NGUI实现2048(三)反编译APK文件
- Unity NGUI实现2048(二)逻辑分析
- Unity-Tween
- Unity3D试题
- Unity3D 游戏贴图(法线贴图,漫反射贴图,高光贴图)
- Unity NGUI实现2048(一)源代码
- Unity编辑器-创建单独编辑框,折叠框,提示框
- [Unity-7] Update和FixedUpdate
- Unity3D中uGUI事件系统简述及使用方法总结
- Get and Post(Unity3D六个发展)
- unity代码反混淆
- unity 反编译 step2 dll -->reflector
- unity 反编译 step1 disUnity
- c#语言与unity3D
- Unity3D技术之优化图形性能绘制调用批处理浅析
- Unity (四)
- Unity3d 导入图像尺寸失真解决方案