1、关于场景,即scene。


一个正常的游戏至少要有三个场景,即菜单(或者文件夹)场景、游戏关卡场景、游戏结束场景。它们一般统一放在project文件夹下scene文件夹(自己创建)中,方便管理。

1.1场景切换

要实现游戏的正常进行,须要场景的切换。比方,从開始菜单怎样进入到游戏中。

開始菜单


关卡画面

这些须要两步准备:
1、设置

要将场景放在托放在上图所看到的位置,做好标记。

2、相关代码编写
	//材质
public Texture startButton;
public Texture rankButton;
void OnGUI(){
//開始菜单,開始游戏,rect前一定要有new,且rect參数为位置左、上,button大小
if (GUI.Button (new Rect (100, 250, 135, 75), startButton)) {
Application.LoadLevel("Start");
}
GUI.Button(new Rect(460, 250, 135, 75), rankButton);
if (GUI.Button (new Rect (20, 20, 60, 30), "exit")) {
Application.Quit();
} }

场景切换要用到函数Application.LoadLevel("Start"),Start是要切换场景的名称,当然这里也能够用数字1来取代,由于上图中地Start的标号就是1。

场景的切换通常是伴随着事件的发生,上面是因为发生了点击button(startButton)的事件才引起场景切换。

注意

if (GUI.Button (new Rect (100, 250, 135, 75), startButton)){}用于推断是否点击button,

而GUI.Button (new Rect (100, 250, 135, 75), startButton);则是产生button。


1.2什么导致切换


一般而言,有点击button、另外一些触发器、碰撞器也能导致切换(临时学到这里)
	//小鸟与管道碰撞则游戏结束
void OnCollisionEnter(Collision other){
if(other.gameObject.tag == "Player"){
GameManager._intance.GameState=GameManager.GAMESTATE_END;
audio.Play();
Application.LoadLevel("End"); if(other.gameObject.tag == "projectile"){ }
}
}

OnCollisionEnter(Collision c)函数用于检測碰撞器发生反应,类似的有OnCollisionStay、OnCollisionExit,分别表示刚接触碰撞器、处于碰撞器中、离开碰撞器,这样就能依据情况作出对应的推断。这里小鸟、管道都是碰撞器(好像至少有一个必须加刚体组件rigidbody),当他们碰撞时,作出对应反应:

1、首先推断是什么碰撞管道(代码属于管道的部分),就须要用到tag,用于区分对象。

2、之后进行相关处理,这里audio.play用于播放音乐,须要事先要在管道上加入组件audioSource,并绑定音乐(由于代码是属于管道)。
LoadLevel()y切换场景。

2、物体移动

1、小鸟的移动


bird有刚体组件如上图
	public void getLife(){
rigidbody.useGravity=true;
this.rigidbody.velocity = new Vector3(2,0,0);
}

初始时没有重力(由于这里设定刚进入游戏时小鸟没有动作,点击鼠标后才激活),getlife函数的rigidbody.useGravity=true使小鸟开启了重力,之后的this.rigidbody.velocity = new Vector3(2,0,0);给了它水平(x轴)方向的初速度。velocity描写叙述角色当前的相对速度。

<pre name="code" class="csharp">	//上跳
void birdJump(){
if(Input.GetMouseButton(0) ){// left mouse button down
audio.Play();
Vector3 vel2 = this.rigidbody.velocity;
this.rigidbody.velocity = new Vector3(vel2.x,5,vel2.z); }
}

左键按下实现上跳,首先获得当前速度,然后改变y方向(实际情况各不同样)的速度,实现向上的动作。

这样结合上面的代码就能实现小鸟的运动。


2、水平移动的实现

	void Update () {
//依据分数来决定子弹的出现
if (GameManager._intance.score >= minScore)
renderer.enabled = true; float outToMove = speed * Time.deltaTime;
transform.Translate(Vector3.up*outToMove);
//又一次出现
if (transform.position.x <= (birdTransform.position.x-2.0f)) {
setPosition();
} }
			float outToMove = speed * Time.deltaTime;
transform.Translate(Vector3.up*outToMove);

这两行代码实现某一轴方向的物体的移动,详细的查资料吧。



刚学unity3d,跟着仿作了flappy bird,记下一些琐碎的心得!的更多相关文章

  1. 【Unity3D基础教程】给初学者看的Unity教程(四):通过制作Flappy Bird了解Native 2D中的RigidBody2D和Collider2D

    作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 引子 在第一篇文章[Unity3D基础教程] ...

  2. 【Unity3D基础教程】给初学者看的Unity教程(三):通过制作Flappy Bird了解Native 2D中的Sprite,Animation

    作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 引子 上一次我们讲了MonoBehaviou ...

  3. [MFC] 高仿Flappy bird 桌面版

    这是今年年初做的东西,一直没有时间整理,现在拿出来分享下~ 目录 开发背景 开发语言及运行环境 效果展示 游戏框架说明 游戏状态及逻辑说明 经典算法说明 重量级问题解决 开发感想 一.开发背景: fl ...

  4. cocos2dx-html5 实现网页版flappy bird游戏

    我也是第一次使用cocos2d_html5,对js和html5也不熟,看引擎自带的例子和引擎源码,边学边做,如果使用过cocos2d-x的话,完成这个游戏还是十分简单的.游戏体验地址: http:// ...

  5. 【教程】HTML5+JavaScript编写flappy bird

         作者: 风小锐      新浪微博ID:永远de风小锐      QQ:547953539      转载请注明出处 PS:新修复了两个bug,已下载代码的同学请查看一下 大学立即要毕业了. ...

  6. 闲扯游戏编程之html5篇--山寨版《flappy bird》源码

    新年新气象,最近事情不多,继续闲暇学习记点随笔,欢迎拍砖.之前的〈简单游戏学编程语言python篇〉写的比较幼稚和粗糙,且告一段落.开启新的一篇关于javascript+html5的从零开始的学习.仍 ...

  7. [MFC] MFC 仿 Flappy bird PC桌面版

    http://www.cr173.com/ 前些日子发现朋友都在玩flappy bird这款虐心的小游戏,网上也炒得很火,于是俺也想下一个玩玩.可是矮穷挫至今还没配上高端的智能机,于是去网上搜了一下, ...

  8. 简化版的Flappy Bird开发过程(不使用第三方框架)

    目录 .1构造世界 .2在世界中添加元素 .3碰撞检测 .4添加动画特效 .5总结 .0 开始之前 之前曾经用Html5/JavaScript/CSS实现过2048,用Cocos2d-html5/Ch ...

  9. 程序员带你一步步分析AI如何玩Flappy Bird

    以下内容来源于一次部门内部的分享,主要针对AI初学者,介绍包括CNN.Deep Q Network以及TensorFlow平台等内容.由于笔者并非深度学习算法研究者,因此以下更多从应用的角度对整个系统 ...

随机推荐

  1. linux基于学习

    1.还有一个文件名前".",它代表的文件""隐藏文件". 2.chgrp:改变文件所属用户组 chown:改变文件全部者 chmod:改变文件的权限 ...

  2. SqlServer中存储过程中将Exec的执行结果赋值给变量输出

    原文 SqlServer中存储过程中将Exec的执行结果赋值给变量输出 背景: 遇到这样一种情况:动态向存储过程中传入表名和表的某些属性(这里用到的是主键ID),然后利用这两个变量查出一条数据的某些字 ...

  3. BZOJ 1901 Dynamic Rankings 树董事长

    标题效果:间隔可以改变k少 我的两个天树牌主席... 隔断Count On A Tree 之后我一直认为,随着树的主席的变化是分域林木覆盖率可持久段树. .. 事实上,我是误导... 尼可持久化线段树 ...

  4. POJ 2756 Autumn is a Genius 采用string大数减法

    标题意味着小神童.加减可以计算. 只是说这个小神童的学科知识,究竟有多神,自己给自己找. 最后,因为数据是非常非常巨大的,我听说关闭50k结束了50000数字总和,可以想见他神教. 这似乎也是考试题目 ...

  5. 完美世界3D格斗手游[格斗宝贝]今日公測

    狗刨学习网报道 / 经过近两年井喷式的发展,国内手游市场洗牌的信号愈加强烈.用户体验的提升.以及对产品核心品质的要求.促进了手游的精品化.而白热化的市场竞争,也催生了各大厂商在细分市场的抢滩.当中.更 ...

  6. Android学习路径(七)建立Action Bar

    在action bar最今本的形式中,它只在左边展示了activity的标题以及应用的icon. 即使在这样的简单的形式中,它也不过告诉用户如今在应用的哪个activity中,同一时候为你的应用保持一 ...

  7. Windows 怎么知道我已连线到网际网络? 原来当中大有文章!

    原文 Windows 怎么知道我已连线到网际网络? 原来当中大有文章! 标题这个问题好像很简单, 但原来深入研究起来还真的不是”因为我能看到网页嘛”这样简单的答案. 研究这个课题是由于公司内部的防火墙 ...

  8. Java里泛型有什么作用

    1 泛型赋予了类型參数式多态的能力 2 泛型的第一个优点是编译时的严格类型检查,提高了程序的安全性和健壮性,这是集合框架最重要的特点. 3 泛型消除了绝大多数的类型转换.假设没有泛型,当你使用集合框架 ...

  9. USACO dualpal

    /* ID:kevin_s1 PROG:dualpal LANG:C++ */ #include <iostream> #include <cstdio> #include & ...

  10. 前端插件@user

    分享一个 @user 前端插件   开源地址:https://github.com/yuezhongxin/Mention.js 插件效果:类似于微博或 github 中 @user 列表效果. 这是 ...