为了接下来要做的小游戏,在这里我要小小的修改一下移动的代码。

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为例:

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(非常高的分辨率)。

然后大家就可以看到非常清晰的影子了。

大家也可以在设计师图中找到光源,去调整光的投射角度,可以更好的找到游戏的体验效果。

Unity -- 入门教程二的更多相关文章

  1. Unity入门教程(下)

    一.概要 在 Unity入门教程(上) 中我们创建了一个游戏项目,并且创建了玩家角色和小球这些游戏对象,还通过添加游戏脚本实现了小方块的弹跳.虽然功能比较简单,但是完整地表现了使用Unity开发游戏的 ...

  2. 无废话ExtJs 入门教程二十一[继承:Extend]

    无废话ExtJs 入门教程二十一[继承:Extend] extjs技术交流,欢迎加群(201926085) 在开发中,我们在使用视图组件时,经常要设置宽度,高度,标题等属性.而这些属性可以通过“继承” ...

  3. 无废话ExtJs 入门教程二十[数据交互:AJAX]

    无废话ExtJs 入门教程二十[数据交互:AJAX] extjs技术交流,欢迎加群(521711109) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...

  4. 无废话ExtJs 入门教程二[Hello World]

    无废话ExtJs 入门教程二[Hello World] extjs技术交流,欢迎加群(201926085) 我们在学校里学习任何一门语言都是从"Hello World"开始,这里我 ...

  5. mongodb入门教程二

    title: mongodb入门教程二 date: 2016-04-07 10:33:02 tags: --- 上一篇文章说了mongodb最基本的东西,这边博文就在深入一点,说一下mongo的一些高 ...

  6. SpringBoot入门教程(二)CentOS部署SpringBoot项目从0到1

    在之前的博文<详解intellij idea搭建SpringBoot>介绍了idea搭建SpringBoot的详细过程, 并在<CentOS安装Tomcat>中介绍了Tomca ...

  7. PySide——Python图形化界面入门教程(二)

    PySide——Python图形化界面入门教程(二) ——交互Widget和布局容器 ——Interactive Widgets and Layout Containers 翻译自:http://py ...

  8. Elasticsearch入门教程(二):Elasticsearch核心概念

    原文:Elasticsearch入门教程(二):Elasticsearch核心概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:ht ...

  9. RabbitMQ入门教程(二):简介和基本概念

    原文:RabbitMQ入门教程(二):简介和基本概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn ...

随机推荐

  1. pycharm下搭建django开发环境

    在一次偶然的机会中,了解到万精油语言python,发现其流行程度发展迅速,于是也开始学习起来,正题. 1.安装python,查阅一些相关的资料及周边的开发工具,我选择python2(2.7.11),注 ...

  2. day03_03 第一个Python程序

    Python的安装 之前安装了python2.7.11,接下来的课程因为是python3的,需要再安装一个python3版本...... 1.进入python.org进行选择安装 2.或者选择课件里的 ...

  3. Leetcode 452.用最少数量的箭引爆气球

    用最少数量的箭引爆气球 在二维空间中有许多球形的气球.对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标.由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了.开始坐 ...

  4. asp.net的Context.Cache缓存过期策略

    最近使用Context.Cache需要了解Cache的缓存过期策略. 文章:ASP.NET缓存中Cache过期的三种策略

  5. 【bzoj3939】[Usaco2015 Feb]Cow Hopscotch 动态开点线段树优化dp

    题目描述 Just like humans enjoy playing the game of Hopscotch, Farmer John's cows have invented a varian ...

  6. kmp-模板-hd-1711

    p数组记录的是当该位置上失配的时候,跳到第几个进行继续匹配: /* 题意:给两个数串,求模板串第一此出现在源串中的位置,开头的位置:没有输出-1: 算法:kmp 先对字符串进行自匹配: 然后串间匹配: ...

  7. 刷题总结——you are the one(hdu4283)

    题目: The TV shows such as You Are the One has been very popular. In order to meet the need of boys wh ...

  8. CF985F Isomorphic Strings (字符串Hash,巧解)

    题目链接 题意翻译 给你一个长度为 \(n\) 的字符串,\(m\) 次询问. 问两个相同长度的子串是否匹配. 我们称两个子串是匹配的,当且仅当其满足: 其中一个子串的字母可替代另一个子串的字母 例如 ...

  9. django无法同步数据库 Error loading MySQLdb module: No module named ‘MySQLdb‘

    最近在学习Python,打算先看两个在线教程,再在github上找几个开源的项目练习一下,在学到“被解放的姜戈”时遇到django同步数据库时无法执行的错误,记录一下. 错误现象: 执行python ...

  10. cf 472G Design Tutorial: Increase the Constraints 分块+压位/FFT

    题目大意 给出两个\(01\)序列\(A\)和\(B\) 哈明距离定义为两个长度相同的序列中,有多少个对应位置上的数字不一样 "00111" 和 "10101" ...