最好的每日交易
最好的每日交易

Android管理bob体育提现bob哪个彩靠谱局的链接可以赚取佣金。学到更多。

Android的Flappy Bird Unity教程 - 在bob体育提现10分钟内完成游戏!

Flappy Birds是非常基本的移动游戏,使创造者Dong Nguyen非常富裕。在这篇文章中,您将看到如何在10分钟内创建一个非常相似的游戏。从一个空白屏幕到一个全功能游戏,准备使用Unity播放Android!bob体育提现
经过
2018年2月9日

关于目前移动技术时代的美妙事情就是任何人现在可以成为一个成功的开发人员。由于ZX Spectrum的日子没有孤独的开发人员能够创建和分配能够与大型出版商的输出一起创建和分发PREE-TOE的应用程序。

很少有事物举例说明这不是Flappy Bird的情况。Flappy Bird是由28岁的Dong Nguyen在他的公司名称Dotgears开发的非常简单的游戏。力学和图形不可能更简单,但它继续赚取50,000美元。这是一个令人着迷的故事,你可以阅读所有这些故事滚石

重点是:应用程序没有特别的。它只是在合适的时间和运气的恰当的地方,它使创造者富裕。今天仍然可以发生这种情况 - 你只需要正确的想法。

为了展示建立这样的东西,我将在短短10分钟内向您展示如何在您自己的浮动鸟游戏中展示。我讨论了如何在Android Studio进bob体育提现行此操作已经,这是一点涉及的(虽然仍然很快)。我也讨论了你的方式在7分钟内在统一中制作2D平台- 尽管真的只是一个基本的框架。

但是,当你结合易于团结的时候,利用浮夸的鸟类的简单性 - 好,这真的是一个10分钟的工作。

玩家角色

首先,创建一个新项目,确保选择2D。

把你的浮躁的鸟精灵扔进你的场景。我在最后一个项目之前创建了一个,所以我会再次使用它。随意使用你所做的那个!

一旦Sprite在您的场景中,通过拖动角落来调整它的大小。现在也应该在左侧的“层次结构”窗口中可见。这向您展示了“场景”中的所有对象,此时,应该只有两个:相机和鸟。

将此视图拖动到鸟类然后释放。它现在应该出现在鸟下面,这意味着现在是鸟的“孩子”。这意味着相机的位置与鸟类相比将保持不变。如果我们的鸟向前移动,那么视野将随之移动。

在场景视图或层次结构中再次选择鸟。您将看到标有视图中右侧的选项和属性列表检查员。这是您可以在何处操作与该对象相关的特定变量。

向下到底部并选择添加组件。现在选择physics2d> ridbody2d.。这是一个很好的,现成的一组指令,它将对我们的玩家施加重力。点击约束在这个面板中,然后选择冷冻旋转Z.。这将阻止你的小鸟像疯子一样旋转,并将相机与他带来,这可能很快就会变得非常令人惊讶。

添加A.Polygon Coller以同样的方式,这将讲述角色边缘的统一。点击字符精灵现在应该无限跌落,带着相机带它。

到现在为止还挺好!

我们也希望我们的角色能够飞行,但这很容易实现。

首先,我们需要创建一个C#脚本。为此创建一个文件夹(右键单击资产中的任何位置以使一个名为“脚本”的文件夹),然后单击并选择创建> C#脚本

我打电话给我的“性格”。双击它以打开C#编辑器,可能是Monodevelop或Visual Studio。现在,添加以下代码:

代码
公共类人物:Monobehaviour {Public RigidBody2D RB;公共浮动movespeed;公众浮动幻想;//用于初始化void start(){rb = getComponent ();} //每帧void update(){rb.velocity = new矢量2(movespeed,rb.velocity.y)调用一次更新;if(input.getmousebuttondown(0)){rb.velocity = new矢量2(rb.velocity.x,upapheight);}如果(transform.position.y> 18 || Transform..y <-19){death();public void death(){rb.velocity = vector3.zero;变换.Position = New Vector2(0,0);}}

这段代码有两件事。它让玩家以速度不断前进,我们将能够在检查器中定义,它增加了我们的“扑振”能力。这更新()在游戏运行时重复调用方法,因此您在此处的任何东西都将连续发生。在这种情况下,我们对我们的刚体增加了一点速度。rb.是物理剧本(刚体2d.)我们早先应用于我们的目的,所以当我们说rb.velocity.,我们指的是游戏对象的速度。

如果您正在使用移动设备,则在屏幕上的任何位置,统一解释MouseClick。当我们发现它时,我们让角色稍微向上移动。

公众浮动移动速度将控制运动的速度和公共浮点fl每次点击时会处理鸟类的高度增加。因为这些变量是公开的,我们将能够将它们从脚本外部更改。

死亡()是一种公共方法。这意味着它是与我们的角色有关的代码,其他脚本和对象将能够调用。它只是将播放器的位置返回到起点。每次角色过高或太低时都会使用它。你会看到为什么这一刻需要公开。这rb.velocity = Vector3.zero;线在那里杀死所有势头 - 以便每次在开始时重新启动时,我们的角色都不会更快地开始下降。

游戏开发

从您的编辑器中出来并将脚本添加为您的角色的组件(选择鸟,选择添加组件>脚本>字符)。你现在可以定义移动速度fl在检查员(这就是公共变量的影响)。我分别为3和5分别设定,似乎是正确的。

还有一件事:在检查员中,您还需要添加一个标签对你的性格。点击它说的地方标签:未标记然后选择播放器从下拉列表中。

障碍

接下来,我们将添加一些障碍:管道。一个人的隧道到隐藏的蘑菇是另一个男人的凡人敌人。

将管子精灵拖放到您的场景中,大致在您希望第一个障碍物的位置,并称之为pipe_up.

现在创建一个新脚本,也像以前一样,并称之为“管道”。这是一个看起来的看法:

代码
公共类管道:monobehaviour {私有字符字符;//用于初始化void start(){character = findobjectoftype ();} //每帧void update(){if(character.transform.position.x  -  transform.position.x> 30){}} void oncollisionEnter2d(collimition2d其他){if(storthed.gameObject.tag ==“播放器”){character.death();}}}

以与之前的情况相同的方式将此脚本添加到管道精灵中。这将显示管道在屏幕左侧移动时。我们还没有把任何东西放在这里,但我们将回到它。

oncollisionEnter2d.是每当撞机与另一个撞机接触时都会调用的方法。在这种情况下:当玩家击中管道。这死亡()然后调用我们之前创建的方法,迫使我们的播放器字符返回起点。

现在,您有一个管道偶尔会在屏幕的另一端消失和重新出现。如果你碰到它,你就会死!

倒置管道

你现在只能有一个直立的管道。

现在添加另一个精灵。您可以通过右键单击层次结构并说新的2D对象>精灵然后选择要使用的精灵;只需再次将文件拖放到场景中更容易。

重命名这个:pipe_down.。它在哪里说绘制模式在检查员中,勾选说的盒子翻转:Y.。正如你可能已经猜到的那样,这已经颠倒了我们的秀丽。添加相同刚体2d.

然后创建另一个新的C#脚本,此时调用管道。这将包含相同的代码:

代码
公共类管道:monobehaviour {私有字符字符;//用于初始化void start(){character = findobjectoftype ();} //每帧void update(){if(character.transform.position.x  -  transform.position.x> 30){}} void oncollisionEnter2d(collimition2d其他){if(storthed.gameObject.tag ==“播放器”){character.death();}}}

如果我们正在进行更多涉及的游戏,我们可能会致电剧本冒险这使得任何伤害播放器和一个单独的脚本regen.当玩家走向右边时,让障碍物刷新。

预制萌芽

现在,我们可以用这一点代码来制作整个Flappy鸟游戏。每次在屏幕周围时,我们都可以将管道移动到屏幕右侧,或者将尽可能多的管道复制和粘贴。

我们是否使用第一个选择,确保当随机生成并保持展会时,务必恰好排队。当角色死亡时,他们可以重生英里远离第一管道!

如果我们选择后者的选项 - 复制和粘贴 - 我们会不必要地使用很多内存,减慢我们的游戏,并限制重放性(因为每次都会相同!)。

相反,让我们使用所谓的“预制”。这是预制的简短,它基本上意味着我们将把管子转变为模板,然后我们可以用来有效地生产更多的管道。对于您之间的程序员,管道脚本是我们的类,屏幕上的每个管道都只是该对象的实例。

为此,只需创建一个名为新文件夹预制物。现在拖你pipe_up.pipe_down.从中出来等级制度并进入文件夹。

随时随地从预制文件夹拖放对象,它将具有相同的属性,这意味着您不需要继续添加组件。更重要的是,它意味着编辑文件夹中的预制的大小将影响整个游戏中的管道的大小 - 无需单独更改它们。

正如您可以想象的那样,这有很多来自组织,节省时间的观点。它还意味着我们可以从我们的代码中与我们的对象进行互动。我们可以创建管道的“实例”。

首先将此代码添加到我们的第一个语句中我们留空管道脚本更新()方法:

代码
void Update(){if(character.transform.position.x  -  transform.position.x> 30){float xran = wandom.range(0,10);浮子yran = random.range(-5,5);实例化(GameObject,New Vector2(character.transform.position.x + 15 + xran,-10 + yran),transform.rotation);摧毁(GameObject);}}

这将首先“实例化”我们的GameObject.。实例化创建一个新的相同副本。在Unity中,每当你使用这个词GameObject.,它是指目前附加脚本的对象 - 在这种情况下我们的管道。

我们正在重新制中具有轻微随机变化的乐趣。

但不是在管道脚本中做同样的事情,而是我们在同一个地方生成两个物体。这样,我们可以轻松地保持第二管的位置相对于第一个管道。这也意味着我们需要较少的管道代码。

创建一个公众gameobjec.皮条织机。然后更新这样的代码:

代码
if(character.transform.position.x  -  transform.position.x> 30){float xran = wandom.range(0,10);浮子yran = random.range(-5,5);浮动Gapran = Aquary.Range(0,3);实例化(GameObject,New Vector22(character.transform.position.x + 15 + xran,-11 + yran),transform.rotation);实例化(Pipedown,New Vector2(Character.Transform.Position.x + 15 + Xran,12 + Gapran + Yran),变换。摧毁(GameObject);}

我也加入了一个Gapran.可变将使我们稍微改变两个管道之间的间隙的大小,只是为了保持有趣的事情。

现在跳回统一并从预制文件夹拖动pipe_down预制物(重要的!)进入它所说'管道的空间(注意它如何通过在管道上插入空间来翻译骆驼盒。请记住,我们将管道设置为一个公共GameObject,这意味着我们可以在这种情况下通过检查器定义此对象来自其他地方的内容。通过为此对象选择预制来,我们确保在实例化管道时,它将包括我们之前添加到它的所有属性和脚本。我们不只是在这里创造一个精灵,而是一个可以杀死玩家的撞机的再生对象。

所有你要添加到同一个部分管道脚本很简单毁灭(GameObject)所以它会在左侧落下时自毁。

如果您点击播放,则游戏将自动滚动,如果触摸管道,您将被杀死。旅行足够远,这些管道将消失,然后在你之前重生。

但当然是游戏站立时,管道之间存在很大的差距,屏幕看起来很闪亮。我们可以通过将一些预制件拖入我们的场景来弥补这一点,以便有一种管道传送带不断朝向我们。但是,虽然更好,是在脚本中生成的管道。正如其他那么,当角色模具时,开始时的管道将被摧毁,并且再次有一个大空白。

这样,每次游戏加载到每次角色都会恢复,重新将一切重置为正常时,我们都可以建立前几个管道。

无限挑战

现在你打算开设一个公众pipe_up.和公众pipe_down.在你的角色脚本中。这样,您可以引用您通过将预制物拖到字符对象上创建的对象,就像添加时一样pipe_down.到你的管道脚本。

您需要添加以下内容:

代码
public gameObject pipe_up;public gameObject pipe_down;

然后我们要创建以下方法:

代码
public void buildlevel(){实例化(pipe_down,新vector3(14,12),transform.rotation);实例化(pipe_up,new vector3(14,-11),transform.rotation);实例化(pipe_down,新vector3(26,14),变换。解决);实例化(pipe_up,新vector3(26,-10),transform.rotation);实例化(pipe_down,新vector3(38,10),变换。协议);实例化(pipe_up,new vector3(38,-14),transform.rotation);实例化(pipe_down,新vector3(50,16),变换。解决);实例化(pipe_up,new vector3(50,-8),transform.rotation);实例化(pipe_down,新vector3(61,11),transform.rotation);实例化(pipe_up,new vector3(61,-13),transform.rotation); }

buildlevel(),我们将在此处调用此方法更新()方法,一次死亡()方法。

当游戏开始时,更新()被调用并在此配置中放置管道。这将使前几个挑战总是对玩家相同。当玩家模具时,管道将以相同的配置重新定位。

这种管道的布局是我精灵的好设置(它的尺度设置为“4”),但您可以与您一起玩。您可能还想测试速度和距离,以调整游戏的难度。

在Unity中返回您的场景并删除当前有两个管道。你的“游戏”看起来像一个空白屏幕和一只鸟。点击并将出现管道,在前几个之后随机化他们的位置。

结束评论

这几乎是整个游戏!添加一些分数,可能会使它有点原始,并在您播放时使难度增加。您需要一个菜单​​屏幕。当角色模具时,摧毁屏幕上的管道也是一个好主意。

统一发展

但是一旦你这样做了,你就有一个播放商店就绪产品 - 一个与一个非常类似的应用程序,使另一个开发人员非常丰富。它只是表明你不需要成为编码天才,或者在你身后有一个大发行商,以便成功。

你只需要一个好主意和十分钟!