Unity+C#如何开发投弹手游戏?教你Unity+C#开发投弹手游戏的操作。

Unity是一个在全球广泛使用的实时内容开发平台,为游戏、汽车、建筑工程、影视动画等广泛领域的开发者提供强大且易于使用的工具,以创建、操作和实现3D、2DVR和AR可视化体验。不过对于一般游戏开发没什么点的小伙伴来说,自己掌握这个软件可能有点困难!想要自己掌握Unity,就得系统学习视频课程。如果有自学Unity的想法,可以选择Unity的特色视频课程和四期课程。Unity专业讲师将带你从基础软件安装到软件介绍再到案例操作~Unity+C#开发炸弹人游戏操作方法:准备。

首先,请下载我为这个游戏创建的初始示例项目,然后将它放在您指定的位置。

然后,使用Unity3D打开这个项目,注意在Assets文件夹下有许多子文件夹。

以下是每个文件夹的主要功能:

AnimationControllers:存储游戏控制器部分,包括逻辑部分。

材质:包含构建每个关卡场景所需的块材质。

模型:存储玩家、关卡和炸弹模型,以及它们的相关资料。

音乐:存储游戏的声音文件。

物理材料(PhysicsMaterials):存储玩家的物理材料数据,是用来实现特定物理属性的一些特殊类型的材料。在本教程中,它是用来让玩家轻松跨越关卡而没有摩擦的。

预设:包含炸弹和爆炸的预制数据。

场景:对应游戏场景的数据。

Scripts:包含游戏的启动脚本,其中会添加很多注释,帮助读者阅读源代码。

音效:包含与炸弹和爆炸效果相关的音效文件。

纹理:包含两个玩家的纹理数据。

扔炸弹

如果您还没有打开游戏项目,请快速打开并尝试运行此程序。如果没有其他问题,您将观察如图所示的情况:

你会注意到游戏中的两个玩家可以通过键盘上的WASD四字键或四个箭头键来驱动他们沿着游戏地图移动。

通常,当按下空格键时,红色玩家会在脚下放置一个炸弹,另一个玩家也可以做同样的事情——只需按下Enter键。

但是,目前我们还没有实现这个功能。为此,您需要先编写放置炸弹的代码。现在,请使用您最喜欢的代码编辑器打开脚本文件Player.cs

这个脚本负责处理玩家的所有动作和动画逻辑,还包含一个方法dropbember,在关联GameObject)bombPrefab时用于检测目的。

privateviddropbumbel(){ if(Bomb Prefab){//CheckIFBomb PrefabisassignedFirst } } 1 . 2 . 3 . 4。为了实现炸弹落在玩家下方的效果,在if语句中添加以下代码:

Instantiate(bombPrefab,myTransform.position,bombPrefab . transform . rotation);1.上面的代码会在玩家脚下生成一个炸弹(随着玩家移动路径的变化,会生成一串炸弹)。现在,运行游戏项目,您将观察到如下图所示的效果:

目前效果不错!

但是,还有一个小问题:炸弹是怎么扔的?如果你可以把炸弹放在任何地方,当你需要计算爆炸应该发生的位置时,就会带来一些问题。

接下来,本教程将向您展示如何实现爆炸的所有细节。

炸弹位置

接下来的任务就是保证炸弹在扔掉的时候能够贴在相应的位置上,让炸弹能够很好的对准地板上的格子。因为在我们的设计中网格上每个块的大小是1×1,所以做这个改变是相当容易的。

打开Player.cs文件并编辑Instantiate()函数,如下所示:

实例化(bombPrefab,newVector3(Mathf。round point(my transform . position . x),bombprefab . transform . position . y,Mathf。round point(my transform . position . z))、bombprefab . transform . rotation);1.2.3.注意函数Mathf。这里的RoundToInt使用了玩家位置的两个参数值X和Z,每个浮点型值都转换成了整数值,可以达到炸弹与地板上的网格很好对齐的效果:

现在,您可以再次启动项目来运行它,并且您将观察到当炸弹被扔下时,它们正好与网格对齐:

虽然在地图上扔炸弹很有趣,但是你知道真正有趣的是怎么爆炸!为此,我们来增加一些功能。

制造爆炸效果

首先,我们需要创建一个新脚本文件:

(1)从“项目”视图中选择“脚本”文件夹;

(2)按下创建按钮;

(3)选择“c #脚本”;

(4)将脚本文件命名为炸弹即可。

现在,将Bomb.cs脚本与预制炸弹相关联:

(1)选择GameObjectBomb在预设文件夹中;

(2)单击按钮“添加组件”;

(3)在搜索框中输入“炸弹”;

(4)选择脚本Bomb.cs你刚刚创造的。

(5)打开这个脚本文件,然后在其Start()方法中输入以下代码:

Invoke("Explode ",3f);1.这个方法有两个参数,第一个是要调用的方法的名称,第二个是调用这个方法时要延迟的小时数。在这种情况下,我们希望达到炸弹在3秒内爆炸的效果。我们将在后面添加这个分解方法的细节。

现在,只需在Update()方法下添加该方法的占位符形式(当前为空):

VoidExplode(){}1.2。在生成任何GameObjectExplosion之前,您需要创建一个male * * *类型的GameObjet对象来分配预制的披露。在Start()方法上方定义以下代码:

publigcgameobjectexplosionprefab;1.保存这个文件,然后从Prefabs文件夹中选择预制炸弹,然后将预制爆炸拖到“ExplosionPrefab”选项后面的空白处。

完成后,返回编辑器。现在开始编写更有趣的代码。

在Explode()方法中,添加以下代码行:

Instantiate(explosionPrefab,transform.position,四元数. identity);//1 get component & lt;MeshRenderer & gt().enabled = false//2转换。find child(" Collider ")game object . set active(false);//3Destroy(gameObject,. 3f);//41.2.3.4.以上代码实现了以下功能:

1.在炸弹位置引发爆炸;

2.禁用meshrender使炸弹隐形;

3.禁用碰撞器,从而允许玩家在爆炸中移动和行走;

4.0.3秒后拆除炸弹;这确保了在游戏对象被删除之前,所有的爆炸都会被触发。

现在,保存脚本Bomb.cs,返回编辑器,再次尝试玩游戏。投一些炸弹,观察它们爆炸时的良好效果。参考下图。

设置爆炸声音效果

为了制造理想的爆炸效果,你需要制造一个巧合。

“补充”协程本质上是一个允许您暂停执行并将控制返回给Unity3D的函数。在未来的某个时刻,函数将从它最后离开的地方继续执行。

人们经常混淆协程和多线程。实际上,它们是不同的:进程运行在同一个线程中,可以在某个中间时间点恢复执行。要了解更多关于协程及其定义的信息,请参考相关的Unity文档(