Unity -- 入门教程二
为了接下来要做的小游戏,在这里我要小小的修改一下移动的代码。
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 -- 入门教程二的更多相关文章
- Unity入门教程(下)
一.概要 在 Unity入门教程(上) 中我们创建了一个游戏项目,并且创建了玩家角色和小球这些游戏对象,还通过添加游戏脚本实现了小方块的弹跳.虽然功能比较简单,但是完整地表现了使用Unity开发游戏的 ...
- 无废话ExtJs 入门教程二十一[继承:Extend]
无废话ExtJs 入门教程二十一[继承:Extend] extjs技术交流,欢迎加群(201926085) 在开发中,我们在使用视图组件时,经常要设置宽度,高度,标题等属性.而这些属性可以通过“继承” ...
- 无废话ExtJs 入门教程二十[数据交互:AJAX]
无废话ExtJs 入门教程二十[数据交互:AJAX] extjs技术交流,欢迎加群(521711109) 1.代码如下: 1 <!DOCTYPE html PUBLIC "-//W3C ...
- 无废话ExtJs 入门教程二[Hello World]
无废话ExtJs 入门教程二[Hello World] extjs技术交流,欢迎加群(201926085) 我们在学校里学习任何一门语言都是从"Hello World"开始,这里我 ...
- mongodb入门教程二
title: mongodb入门教程二 date: 2016-04-07 10:33:02 tags: --- 上一篇文章说了mongodb最基本的东西,这边博文就在深入一点,说一下mongo的一些高 ...
- SpringBoot入门教程(二)CentOS部署SpringBoot项目从0到1
在之前的博文<详解intellij idea搭建SpringBoot>介绍了idea搭建SpringBoot的详细过程, 并在<CentOS安装Tomcat>中介绍了Tomca ...
- PySide——Python图形化界面入门教程(二)
PySide——Python图形化界面入门教程(二) ——交互Widget和布局容器 ——Interactive Widgets and Layout Containers 翻译自:http://py ...
- Elasticsearch入门教程(二):Elasticsearch核心概念
原文:Elasticsearch入门教程(二):Elasticsearch核心概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:ht ...
- RabbitMQ入门教程(二):简介和基本概念
原文:RabbitMQ入门教程(二):简介和基本概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn ...
随机推荐
- 对java多线程的一些浅浅的理解
作为一名JAVA初学者,前几天刚刚接触多线程这个东西,有了些微微的理解想写下来(不对的地方请多多包涵并指教哈). 多线程怎么写代码就不说了,一搜一大堆.说说多线程我认为最难搞的地方,就是来回释放锁以及 ...
- BZOJ 2243 染色 树链剖分
题意: 给出一棵树,每个顶点上有个颜色\(c_i\). 有两种操作: C a b c 将\(a \to b\)的路径所有顶点上的颜色变为c Q a b 查询\(a \to b\)的路径上的颜色段数,连 ...
- const用法归纳总结 C++
非常好的一篇分析const的总结归纳, 在此谢谢原作者:http://blog.csdn.net/zcf1002797280/article/details/7816977 在普通的非 const成员 ...
- CodeM初赛B轮
做什么啊,我这么菜,应该弃赛的 [编程|1500分] 子串 时间限制:3秒空间限制:32768K 题目描述 给出一个正整数n,我们把1..n在k进制下的表示连起来记为s(n,k),例如s(16,16) ...
- C++之Effective STL学习笔记Item7
假设我们现在有以下代码: void doSomething() { vector<Widget*> vwp; ; i < SOME_MAGIC_NUMBER; ++i) vwp.pu ...
- 【bzoj1690】[Usaco2007 Dec]奶牛的旅行 分数规划+Spfa
题目描述 作为对奶牛们辛勤工作的回报,Farmer John决定带她们去附近的大城市玩一天.旅行的前夜,奶牛们在兴奋地讨论如何最好地享受这难得的闲暇. 很幸运地,奶牛们找到了一张详细的城市地图,上面标 ...
- mybatis读取oracle中blob
controller: byte[] blob = commonService.getPersonImage(bean.getIdCard()); String base64 = new String ...
- zygote的分裂
1 zygote的分裂 前面已经讲了zygote分裂出了长子system_server,然后SS(system_server)就通过initAndLoop进行消息循环处理了.那么谁会向zygote发送 ...
- python解析yaml文件
YAML语法规则: http://www.ibm.com/developerworks/cn/xml/x-cn-yamlintro/ 下载PyYAML: http://www.yaml.org/ 解压 ...
- 【python接口自动化】logger
#! /usr/bin/env python # coding=GBK import logging, os class Logger: def __init__(self, path, clevel ...