求game over什么意思音效

教程基于 , 这个例子感觉还是比较经典的, 网上转载的也比较多. 刚好最近也在学习U3D, 做的过程中自己又修改了一些地方, 写篇文和大家一起分享下, 同时也加深记忆. 有什么纰漏的地方还请大家多包涵.

新建工程,在Project面板创建文件夹, 是为了更好的规划管理资源文件.

接着在Hierarchy面板上创建多个空对象(这样的结构也是清晰了整个游戏的层次, 对象之间的关系一目了然), 这些空对象的Position保持(0,0,0)即可. 保存场景到Scenes文件夹中, 名称为Stage1.

在弹出的Sprite Editor窗口中, 进行绘制每个平台岛屿的包围矩形, 以便将纹理分隔成更小的部分. 然后分别命名为platform1和platform2.

修改下游戏对象的Z坐标, 如下所示:

0

此时, 点击Scene面板上的2D到3D视图切换, 可以清除的看到层次:

但是已经比图片小多了.

但是我更愿意去使用Polygon Collider 2D来达到更精致的效果, 这里只是个例子, 大家可以自由选择.

接着, 再为主角对象添加Rigidbody 2D刚体组件, 现在运行可以看到如下结果:

可以看到主角往下落了, 这是因为刚体带有重力, 但在这个游戏中我们用不到重力, 将Gravity Scale设置为0即可. 另外, 不想因为物理而引起的主角旋转, 则将Fixed Angles勾选上.

开始准备让主角移动. 在Scripts文件夹中, 创建一个C#脚本, 名称为PlayerScript, 实现让方向键移动主角, 代码如下:

/// 玩家控制器和行为

这里以改变刚体的速率来达到主角移动的效果, 而不是通过直接改变transform.Translate, 因为那样的话, 可能会不产生碰撞. 另外, 这里有人可能会疑问为什么实现移动的代码要写在FixedUpdate而不是Update中, 请看Update和FixedUpdate的区别: .

现在将此脚本附加到主角对象上, 点击运行, 方向键来控制移动. 

/// 当前游戏对象简单的移动行为

将此脚本附加到章鱼对象上, 现在运行吗可以看到章鱼往前移动, 如图:

此时如果主角和章鱼发生碰撞, 会互相阻塞对方的移动.

1),并且勾选"IsTrigger"属性。勾选"IsTrigger"属性表示该碰撞体用于触发事件,并将被物理引擎所忽略。意味着,子弹将穿过触碰到的对象,而不会阻碍对象的移动,触碰的时候将会引发"OnTriggerEnter2D"事件。创建一个脚本,命名为"ShotScript",代码如下:

// 2 - 为避免任何泄漏,只给予有限的生存时间.[20秒]

将此脚本附加到子弹对象上,然后将"MoveScript"脚本也附加到子弹对象上以便可以移动。保存此对象为预制。接着,让碰撞产生伤害效果。创建一个脚本,命名为"HealthScript",代码如下:

/// 处理生命值和伤害 /// 对敌人造成伤害并检查对象是否应该被销毁 // 判断子弹归属,避免误伤 // 记住,总是针对游戏的对象,否则你只是删除脚本

将此脚本附加到Poulpi预制体上。现在运行,让子弹和章鱼碰撞,可以看到如下结果:

如果章鱼的生命值大于子弹的伤害值,那么章鱼就不会被消灭,可以试着通过改变章鱼对象的"HealthScript"的hp值。

接着,我们来准备射击。创建一个脚本,命名为"WeaponScript",代码如下:

/// 两发子弹之间的发射间隔时间 // 初始化冷却时间为0 // 冷却期间实时减少时间 // 设置子弹运动方向 /// 武器是否准备好再次发射
// 小心:对于Mac用户,按Ctrl +箭头是一个坏主意

当收到射击的按钮状态,调用Attack(false)方法。现在运行,可以看到如下结果:

Prefab"属性,创建一个脚本,命名为"EnemyScript",用来简单地每一帧进行自动射击,代码如下:

将此脚本附加到章鱼对象上,现在运行,可以看到如下结果:

可以看到章鱼向右射击了子弹,这是因为代码就是让它那么做的。实际上,应该做到可以朝向任何方向射击子弹。修改"WeaponScript"中的Attack方法,代码为如下:

// 如果是敌人的子弹, 则改变方向和移动速度

可以适当调整子弹的移动速度,它应该快于章鱼的移动速度。现在运行,如下图所示:

目前,当主角和章鱼碰撞时,仅仅只是阻碍对方的移动而已,在这里改成互相受到伤害。打开"PlayerScript"文件,添加如下代码:

为了达到这种视差卷轴的效果,可以让背景层以不同的速度进行移动,越远的层,移动地越慢。如果操作得当,这可以造成深度的错觉,这将很酷,又是可以容易做到的效果。在这里存在两个滚动:

  • 主角随着摄像机向前推进
  • 背景元素除了摄像机的移动外,又以不同的速度移动

一个循环的背景将在水平滚动的时候,一遍又一遍的重复进行显示。现有的层如下:

接下来,实现无限背景。当左侧的背景对象远离了摄像机的左边缘,那么就将它移到右侧去,一直这样无限循环,如下图所示:

要做到检查的对象渲染器是否在摄像机的可见范围内,需要一个类扩展。创建一个C#文件,命名为"RendererExtensions.cs",代码如下:

/// 检查对象渲染器是否在摄像机的可见范围内

接下来,可以开始实现不带背景循环的滚动。创建一个脚本,命名为"ScrollingScript",代码如下:

/// 背景视差滚动脚本 // 获取该层渲染器的所有子集对象 // Note: 根据从左往右的顺序获取子集对象 // 我们需要增加一些条件来处理所有可能的滚动方向。 // 该列表的顺序是从左往右(基于x坐标) // 检查子集对象(部分)是否在摄像机前已准备好. // 如果子集对象已经在摄像机的左侧,我们测试它是否完全在外面,以及是否需要被回收. // 获取最后一个子集对象的位置 // 将被回收的子集对象作为最后一个子集对象

在Start方法里,使用了LINQ将它们按X轴进行排序。

将这个脚本附加到以下对象上,并且设置好其属性值,如下:

现在添加更多的元素到场景上:

  • 添加更多的敌人到3 - Foreground,放置在摄像机的右边

接下来,修改敌人脚本,让敌人静止不动,且无敌,直到摄像机看到它们。另外,当它们移出屏幕时,则立刻移除它们。修改"EnemyScript"脚本,代码为如下:

// 当未登场的时候检索脚本以禁用 // 检查敌人是否登场 // 超出摄像机视野,则销毁对象

在游戏过程中,可以发现主角并不是限制在摄像机区域内的,可以随意离开摄像机,现在来修复这个问题。打开"PlayerScript"脚本,在Update方法里面添加如下代码:

 #region 确保没有超出摄像机边界
 

Blended",接着更改一些属性,如下所示:

其中Color Over Lifetime要设置成在结束时,有个淡出的效果,如下图所示:

当调整完成后,取消勾选"Looping",现在粒子效果为如下:

保存成预制,命名为"SmokeEffect",放在"Prefabs/Particles"文件夹下。现在创建另一个粒子,火焰效果,使用默认材质即可。其他设置如下:

 其中Color Over Lifetime要设置成有一个***到橙色的渐变,最后淡出,如下图所示:

/// 从代码中创建粒子特效 /// 在给定位置创建爆炸特效 /// 从预制体中实例化粒子特效

这里创建了一个单例,可以让任何地方都可以产生烟和火焰的粒子。将这个脚本附加到"Scripts"对象,设置其属性"Smoke Effect"和"Fire Effect"为对应的预制体。现在是时候调用这个脚本了,打开"HealthScript"脚本文件,在OnTriggerEnter方法里面,更新成如下代码:

/// 对敌人造成伤害并检查对象是否应该被销毁

现在运行,射击敌人,可以看到如下效果:

现在来添加一些声音。将声音资源放入"Sounds"文件夹,取消勾选每一个声音的"3D sound"属性,因为这是2D游戏。准备播放背景音乐,创建一个游戏对象,命名为"Music",其Position为(0, 0, 0),将背景音乐拖到这个对象上,然后勾选"Mute"属性。因为音效总是在一定的时机进行播放,所以创建一个脚本文件,命名为"SoundEffectsHelper",代码如下:

/// 播放给定的音效 // 做一个非空判断, 防止异常导致剩余操作被中止 // 因为它不是3D音频剪辑,位置并不重要。

这里我做了一个非空判断, 因为按照原例中的程序, 当章鱼死亡在摄像机边界时, 会导致Script对象被销毁! 从而引发程序异常. 我没有找到被销毁的准确原因, 所以暂时折中一下, 加了个判断, 以确保程序能照常运行. 如果哪位大神有知道原因的话也欢迎告诉我来更新此文.

将此脚本附加到"Scripts"对象上,然后设置其属性值,如下图所示:

接着,在"HealthScript"脚本文件里,播放粒子效果后面,添加代码:

现在运行,就可以听到声音了。

1)。添加一个空对象,命名为"Scripts",用来加载脚本。现在为这个启动画面,添加一个开始按钮。创建一个脚本文件,命名为"MenuScript",代码如下:

// 在开始游戏界面绘制一个按钮

将此脚本附加到"Scripts"对象上。现在运行,可以看到如下效果:

但是,点击按钮会崩溃,因为没有将Stage1场景添加进来。打开"File"→"Build Settings",将场景"Menu"和"Stage1"拖动到上面的"Scenes In Build"里面。再次运行,就可以看到按钮正常切换场景了。当主角被摧毁时,需要可以重新开始游戏。创建一个脚本文件,命名为"GameOverScript",代码如下:

/// 开始或退出游戏 // 重新加载游戏场景 // x轴中心, y轴2/3处创建"返回菜单"按钮

在主角死亡的时候,调用这个脚本。打开"PlayerScript"文件,添加如下代码:

现在运行,当死亡时,就会出现按钮,如下图所示:

9.代码创建平台岛屿和敌人

现在, 一个简单的横版射击小游戏已经有雏形了, 然后手动创建有限的岛屿和敌人毕竟有耗尽的时候. 这个时候我们可以在代码中动态的去创建敌人和岛屿, 这样只要玩家还存活, 就会一直有敌人出现, 有点无尽版的意思.

接着继续创建一个脚本文件,命名为"MakeEnemyScript",代码如下:

现在再次运行, 就会看到系统自动创建的章鱼敌人和漂浮岛屿了!

到这里, 整个游戏就完成了, 推荐大家可以去页首找原文链接去看看, 老外的原文解说的更详细, 我也是在原文的基础上自己再次整理.

最后附上程序源码, 文中有纰漏或看不太明白的地方大家可以对照着源码一起看, 欢迎留言指教.

声之寄托(KOEWOTAYORINI)总共有4个结局。其中达成难度较高的是信赖度极低的BAD END与信赖度极高的完美结局,下面就来分享一下声之寄托全结局达成攻略。

声之寄托全结局达成攻略

当故事在第7章结束的情况

此结局可以通过重复选择通话对象不喜欢的言论达成。由于对话会一直重复进行直到你选择正确的***为止,你可以通过持续在此场景选择不正确的***来降低信赖度。

下降――拒接,直到选择接听无限循环

下降――否,直到选择是无限循环

但我说的是真的 请你救救我

上升――我知道了,总之你先冷静一下

下降――我很忙恕我拒绝,直到正确选择无限循环

下降――加油! 直到正确选择无限循环

在完成第五章之后,你会被通话对象询问是否进行“猜谜游戏”。这个选项会决定游戏是否会在第7章结束。如果你的目标是【BAD END】请拒绝此提议。

HAPPY END是只有在信赖度极高 的场合才能到达的结局。游戏中并没有透露如何提高信赖度,但是官方博客上有发布一些提示。

完成第五章之后,你将进行猜谜。

如果你没有回复这个猜谜,你将无法进入第八章以及之后的阶段。如果你的目标是HAPPY END,请回答正确***【声音】。

在章节之间的对话中,给出可以得到对方信任的回答。

用尽可能短的路线通关。随着游戏时间的推移,信赖度会下降。

从第九章开始,游戏将不再有选项,取而代之的是出现Game Over。由于在Game Over时信赖度会下降,所以尽量避免Game Over。但是,有可能会出现意外情况,所以建议玩家在第九章开始的时点保存游戏。

在第十二章逃离杀人魔时,你可以通过尽可能保留剩余次数来提高信赖度。最速脱离方式将在后文解释。

本作根据选择和信赖度分支剧情和结局。选择分支点①第五章后是否接受猜谜游戏,选择分支点②第七章后是否救猫。场景分支由以下流程图表示。

参考资料

 

随机推荐