刚学unity3d,跟着仿作了flappy bird,记下一些琐碎的心得!
1、关于场景,即scene。
1.1场景切换
//材质
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什么导致切换
//小鸟与管道碰撞则游戏结束
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),当他们碰撞时,作出对应反应:
2、物体移动
1、小鸟的移动
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,记下一些琐碎的心得!的更多相关文章
- 【Unity3D基础教程】给初学者看的Unity教程(四):通过制作Flappy Bird了解Native 2D中的RigidBody2D和Collider2D
作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 引子 在第一篇文章[Unity3D基础教程] ...
- 【Unity3D基础教程】给初学者看的Unity教程(三):通过制作Flappy Bird了解Native 2D中的Sprite,Animation
作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 引子 上一次我们讲了MonoBehaviou ...
- [MFC] 高仿Flappy bird 桌面版
这是今年年初做的东西,一直没有时间整理,现在拿出来分享下~ 目录 开发背景 开发语言及运行环境 效果展示 游戏框架说明 游戏状态及逻辑说明 经典算法说明 重量级问题解决 开发感想 一.开发背景: fl ...
- cocos2dx-html5 实现网页版flappy bird游戏
我也是第一次使用cocos2d_html5,对js和html5也不熟,看引擎自带的例子和引擎源码,边学边做,如果使用过cocos2d-x的话,完成这个游戏还是十分简单的.游戏体验地址: http:// ...
- 【教程】HTML5+JavaScript编写flappy bird
作者: 风小锐 新浪微博ID:永远de风小锐 QQ:547953539 转载请注明出处 PS:新修复了两个bug,已下载代码的同学请查看一下 大学立即要毕业了. ...
- 闲扯游戏编程之html5篇--山寨版《flappy bird》源码
新年新气象,最近事情不多,继续闲暇学习记点随笔,欢迎拍砖.之前的〈简单游戏学编程语言python篇〉写的比较幼稚和粗糙,且告一段落.开启新的一篇关于javascript+html5的从零开始的学习.仍 ...
- [MFC] MFC 仿 Flappy bird PC桌面版
http://www.cr173.com/ 前些日子发现朋友都在玩flappy bird这款虐心的小游戏,网上也炒得很火,于是俺也想下一个玩玩.可是矮穷挫至今还没配上高端的智能机,于是去网上搜了一下, ...
- 简化版的Flappy Bird开发过程(不使用第三方框架)
目录 .1构造世界 .2在世界中添加元素 .3碰撞检测 .4添加动画特效 .5总结 .0 开始之前 之前曾经用Html5/JavaScript/CSS实现过2048,用Cocos2d-html5/Ch ...
- 程序员带你一步步分析AI如何玩Flappy Bird
以下内容来源于一次部门内部的分享,主要针对AI初学者,介绍包括CNN.Deep Q Network以及TensorFlow平台等内容.由于笔者并非深度学习算法研究者,因此以下更多从应用的角度对整个系统 ...
随机推荐
- java流的性能优化1-文件复制
传统的I/O速度相对照较慢,它会成为系统性能的瓶颈,所以在java1.4之后提供了NIO,它是一种全新的流:它具有下面特性: 1.为全部的原是类型提供Buffer缓存支持: 2.使用java.nio. ...
- TextView于getCompoundDrawables()使用演示样本的方法
MainActivity例如下列: package cc.testcompounddrawables; import android.app.Activity; import android.grap ...
- 系列二VS项目软件配置工具介绍
原文:系列二VS项目软件配置工具介绍 Svn和VisualSvn介绍 在使用TortoiseSvn(SVN客户端)+ AnkhSvn(VS2008插件) +VisualSvn Server(版本控制服 ...
- 它们的定义dialog
(1)你需要准备自己的自定义对话框样式,是一个布局文件 <?xml version="1.0" encoding="utf-8"? > <Li ...
- HTTP长连接和短连接(转)
1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接.HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议.IP协议主要解决网络路由和寻址问 ...
- Android开发技巧——实现在图标文本底部导航栏(更新)
本文参考了导航栏的代码viewpagerindicator实现. 本文介绍了之前版本号qq或者微信,添加文本,实现图标,导航栏的底部. 2014-09-14 13:59:42更新:library的代码 ...
- NSIS脚本:更改壁纸
原文 NSIS脚本:更改壁纸 我们在制作主题安装包的时候,经常要进行自动更改壁纸的操作,其实用NSIS实现这一点非常简单.示例代码如下: 01 Name "更改壁纸" 02 Out ...
- 一键安装 gitlab7 on rhel6.4 并设置邮件发送
一键安装 gitlab7 on rhel6.4 并设置邮件发送 世间本无事,庸人自扰之.书归正传,简短节说:gitlab是个好东西,可是安装手冊奇烂.尽管以前对比文档一步一步安装起来gitlab 6. ...
- Oracle按不同时间分组统计
Oracle按不同时间分组统计 Oracle按不同时间分组统计的sql 如下表table1: 日期(exportDate) 数量(amount) -------------- ----------- ...
- Swift使用单个案件管理FMDB数据库
下班... 抢 我曾经Swift使用单一个案管理FMDB数据库的方法共享出来: // Created by 秦志伟 on 14-6-12. import UIKit class ZWDBManager ...