刚学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平台等内容.由于笔者并非深度学习算法研究者,因此以下更多从应用的角度对整个系统 ...
随机推荐
- ruby简单的基本 3
类 Ruby一切都是对象,它包含了一个恒定.例如,可以使用.class物业查看对象的类型,你可以看一下1.class.你会发现常1类型是Fixnum,1但它是Fixnum的一个例子. Ruby本类cl ...
- FastDFS设备、构造、配置()一-安装和部署
FastDFS是一个开源的.高性能的的分布式文件系统,他基本的功能包含:文件存储.同步和訪问,设计基于高可用和负载均衡,FastDFS很适用于基于文件服务的站点.比如图片分享和视频分享站点 FastD ...
- 7 JavaScript Basics Many Developers Aren't Using (Properly)【转】
JavaScript, at its base, is a simple language that we continue to evolve with intelligent, flexible ...
- PHP于DIRECTORY_SEPARATOR任务
DIRECTORY_SEPARATOR是php的内部常量.用于显示系统分隔符的命令,不须要不论什么定义与包括就可以直接使用. 在windows下路径分隔符是\(当然/在部分系统上也是能够正常执行的), ...
- ReferenceTypeDemo
对象a作为参数argument在方法中使用时,如果argument在方法中赋予另一个对象的地址,则之后方法中对参数argument的操作,都不会影响到对象a. 方法中参数argument如果是对象,a ...
- Unity2D实现贴图凹凸感并接受实时光照效果
先看终于效果: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/d ...
- LeetCode: Palindrome Partitioning [131]
[称号] Given a string s, partition s such that every substring of the partition is a palindrome. Retur ...
- JavaScript运行命令
前言 动人js一段时间,我认为事情仅仅是一个很肤浅的理解.是非常欠缺的.所以開始使用博客来对这一部分的知识做个慢慢的记录和积累. 相信积少成多,慢慢的将这一部分的知识攻克! 第一篇记录的不是相关的应用 ...
- WPF学习(11)2D绘图
本篇我们来学习WPF的绘图,在2D绘图中主要有这么几个重要的类:Drawing.Visual和Shape,顺便讲下Brush和BitmapEffect. 1 2D绘图 1.1Drawing类 Draw ...
- C#中实现并发
C#中实现并发的几种方法的性能测试 0x00 起因 去年写的一个程序因为需要在局域网发送消息支持一些命令和简单数据的传输,所以写了一个C/S的通信模块.当时的做法很简单,服务端等待链接,有用户接入后开 ...