Unity+C#怎么开发炸弹人游戏?教你Unity+C#开发炸弹人游戏操作

Unity是全球应用非常广泛的实时内容开发平台,为游戏、汽车、建筑工程、影视动画等广泛领域的开发者提供强大且易于上手的工具来创作、运营和变现3D、2DVR和AR可视化体验。而一般没有点游戏开发的小伙伴想要自学掌握这个软件,可能就有点困难了!想要自学掌握Unity,还得是要系统的视频课程学习。如果你有想法自学Unity,那么就可以选择的Unity精选视频课程,四个阶段课程,Unity专业讲师带你从基础的软件安装到软件介绍到案例操作~

Unity+C#开发炸弹人游戏操作方法:

准备工作

首先,请下载一个我为本文游戏建立的初始示例项目,然后把它放到一个你指定的位置。

然后,使用Unity3D打开这个项目,注意到Assets文件夹下包含了好多的子文件夹。

这里具体说一下各个文件夹的主要功能:

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

Materials:包含构建各关卡场景所需要的块(Block)材质。

Models:存储玩家、关卡及炸弹模型,及其相关材质。

Music:存储游戏的音效文件。

PhysicsMaterials:存储玩家的物理材质数据,它们是一些特殊类型的材质,用于实现特定的物理属性。在本教程中,用于使玩家在无摩擦情况下轻松地在关卡中穿越。

Prefabs:包含炸弹及爆炸的预制数据。

Scenes:对应于游戏场景数据。

Scripts:包含游戏的启动脚本,其中添加的大量注释将有利于读者阅读源码。

SoundEffects:包含炸弹及爆炸效果相关的声效文件。

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

投掷炸弹

如果你还没有打开游戏工程,请抓紧打开,然后试着运行一下此程序。没有其他问题的话,你会观察到如图所示的情形:

你会注意到,游戏中的两个玩家可以通过键盘上的WASD四个字符键或者四个箭头键驱动,使其沿着游戏地图运动。

通常,当按下空格键时红色玩家会在其脚下安置一枚炸弹,而另一个玩家也能够做同样的事情——只是通过按回车键实现。

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

此脚本负责处理所有的玩家运动及动画逻辑,还包含一个方法DropBomb,当关联游戏对象(GameObject)bombPrefab时,它用于检测目的。

privatevoidDropBomb(){if(bombPrefab){//Checkifbombprefabisassignedfirst}}1.2.3.4.

为了实现一个炸弹掉落在玩家下面的效果,在if语句中添加下面的代码:

Instantiate(bombPrefab,myTransform.position,bombPrefab.transform.rotation);1.

上述代码将在玩家脚下生成炸弹(随着玩家的运动路径的变化,将生成成串的炸弹)。现在,运行一下游戏工程,你会观察到如下图所示效果:

目前,效果不错吧!

但是,还有一个小问题:炸弹投掷的方式如何?如果是无论在哪里你都能放炸弹的话,当你需要计算爆炸应该发生的位置时就会带来一些问题。

接下来,本教程将向你具体介绍如何实现爆炸的所有细节。

炸弹定位

下一步任务是确保炸弹在丢掉时能够附着到相应位置,从而实现炸弹很好地与地板上的网格对齐。由于我们的设计中网格上的每个图块大小是1×1,所以进行此更改是相当容易的。

打开文件Player.cs,编辑一下Instantiate()函数,像下面这样:

Instantiate(bombPrefab,newVector3(Mathf.RoundToInt(myTransform.position.x),bombPrefab.transform.position.y,Mathf.RoundToInt(myTransform.position.z)),bombPrefab.transform.rotation);1.2.3.

注意,这里函数Mathf.RoundToInt调用中使用了玩家位置的x和z两个参数值,每一个浮点类型值被转换为一个整型值,这就可以实现炸弹很好地与地板上的网格对齐的效果:

现在,你可以再次启动工程来运行一下,你会观察到当投掷炸弹时,这些炸弹恰好能够对齐网格:

虽然把炸弹投掷到地图上是很有趣的,但你知道真正有趣的事是如何实现爆炸!为此,我们再来添加一些功能。

创建爆炸效果

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

(1)从Project视图下选择Scripts文件夹;

(2)按下Create按钮;

(3)选择“C#Script”;

(4)把脚本文件命名为Bomb即可。

现在,把Bomb.cs脚本关联到预制Bomb上:

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

(2)点击按钮“AddComponent”;

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

(4)选择你刚刚创建的脚本Bomb.cs;

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

Invoke("Explode",3f);1.

此方法使用了两个参数,第一个是将要调用的方法名称,第二个是在调用此方法时需要延迟的时间数。在本例中,想实现炸弹在3秒内爆炸的效果。我们将在后面添加这个Explode方法的具体内容。

现在,只是在Update()方法下面添加这个方法占位符形式(目前为空):

voidExplode(){}1.2.

在生成任何GameObjectExplosion之前,还需要创建一个公共类型的GameObjet对象,以便进行预制Explosion的赋值。恰好在Start()方法上面定义如下代码:

publicGameObjectexplosionPrefab;1.

保存此文件,然后从Prefabs文件夹下选择预制Bomb,然后把预制Explosion拖动到“ExplosionPrefab”选项后面空白处。

完成这一操作后,返回到编辑器中。现在开始编写更有意思的代码。

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

Instantiate(explosionPrefab,transform.position,Quaternion.identity);//1GetComponent<MeshRenderer>().enabled=false;//2transform.FindChild("Collider").gameObject.SetActive(false);//3Destroy(gameObject,.3f);//41.2.3.4.

上述代码实现如下功能:

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

2.禁用网络渲染器(meshrender),使炸弹不可见;

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

4.在0.3秒后拆除炸弹;这可以确保在删除GameObject之前所有爆炸都会触发。

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

设置爆炸音效

为了创建理想的爆炸效果,你需要创建一个协程。

「补充」协程本质上是一个函数,允许你暂停执行并将控制返回到Unity3D。在以后的某个时间点处该函数将从上次离开的位置恢复执行。

人们经常混淆协程与多线程。其实,它们是不同的:协程运行在同一个线程中,并能够在某中间点处及时恢复执行。若要了解更多的关于协程及其定义相关信息,请查阅相关的Unity文档(

  • 涓轰粈涔堢敤Unity3D寮鍙戞父鎴忔槸鐢–#JS寮鍙戣屼笉鏄敤C++
    绛旓細鐜板湪杩樻湁璋佸仛娓告垙閫昏緫鐢╟++鐨勶紝鍑犱箮鍏ㄩ儴鏄皝瑁呯殑鏇撮珮灞傜殑璇█锛屼粬浠伐鍏烽綈鍏紝閫傚悎蹇熷紑鍙戯紝鑰宑++鍑犱箮鏄揩閫熷紑鍙戠殑鐏鹃毦锛孶3D琚汉璇熺梾鐨勬槸C#鍜孞S閮戒笉鑳界儹鏇达紝鏇村埆璇碿++浜嗭紝鎵浠ユ湁濂戒簨鑰咃紝鐢╨ua灏佽c#锛屽浗鍐呮墜娓稿嚑涔庨兘鏄疨ython鎴栬卨ua寮鍙戙傚紑鍙戝懆鏈熺煭锛屽彲鐑洿(杩欏鎵嬫父鏉ヨ寰堥噸瑕)銆俢ocos2dx閮藉仛浜唋ua...
  • unity涓csharp鐗堟湰涓嶅吋瀹
    绛旓細unity涓csharp鐗堟湰涓嶅吋瀹硅В鍐虫柟娉曘1銆佸皢椤圭洰涓UnityVS鐩綍缁欏垹闄ゃ2銆佸畨瑁呮渶鏂扮殑VisualStudio2012ToolsforUnity銆3銆侀氳繃鐐瑰嚮寮濮嬶紝MicrosoftVisualStudio2012ToolsforUnity锛孷isualStudio2012ToolsforUnityPackage鍒欒嚜鍔ㄦ墦寮U3D銆4銆佽嚜鍔ㄥ畨瑁呬簡鍖匳isualStudioTools锛屽啀閫塆enerateProjectFiles锛岀劧鍚庨夋嫨OpeninVisual...
  • Unity3d鍩硅閮藉煿璁摢浜涘唴瀹
    绛旓細棣栧厛鐪嬩釜浜虹殑鍩虹鑳藉姏锛屾按骞充笉鍚岋紝鍩硅鐨勫唴瀹逛篃浼氭湁鎵涓嶅悓銆傚叿浣撳彲浠ョ湅涓涓嬩笅闈㈢殑璇剧▼鍒嗙被锛unity3d璇剧▼鍐呭涓銆C璇█涓庢暟鎹粨鏋勶細C璇█鍩虹銆佸彉閲忕被鍨嬨佽繍绠楃銆佹潯浠剁粨鏋勩佸惊鐜粨鏋勩佹暟缁勩佹寚閽堛佸嚱鏁般佸瓧绗︿覆銆佺粨鏋勩佹枃浠舵搷浣滅瓑 C椤圭洰寮鍙戯細瀛︾敓淇℃伅绠$悊绯荤粺寮鍙 unity3鍩硅璇剧▼鍐呭浜屻乁3D娓告垙鑴氭湰璇█C#...
  • 鎬庝箞鎶unity娓告垙鐣岄潰鍔犲埌c# 椤圭洰涓
    绛旓細1銆佸鏋滃彧闇瑕佸湪winform涓樉绀Unity3D鐨勬父鎴忥紝璁╁叾鍙鍖栵紝鍙互鍦ㄤ綘鐨勭獥浣撲腑娣诲姞涓涓淯nityWebPlayer Control鈥濇帶浠讹紝濡傛灉鈥滃伐鍏风鈥濋噷娌℃壘鍒帮紝灏卞湪宸ュ叿绠辩獥鍙g偣鍑婚紶鏍囧彸閿紝鈥滈夋嫨椤光濈劧鍚庨夆淐OM缁勪欢鈥濓紝閫変腑UnityWebPlayer Control锛岀偣鈥滅‘瀹氣濓紝灏辫兘鍦ㄥ伐鍏风閲屾壘鍒拌繖涓帶浠朵簡锛岀劧鍚庡湪鎺т欢鈥滃睘鎬р濅腑娣诲姞...
  • unity 涓巓c浜や簰
    绛旓細"$(PROJECT_DIR)"浠h〃浜嗗伐绋嬬殑鏍圭洰褰 unity 涓巓c浜や簰涓昏鍦ㄤ簬鏁版嵁闂寸殑浼犻掞紝unity浼犻掔殑鍊煎埌浜唎c杩欓噷鍙互鐢c鎺ユ敹骞惰В鏋愩傚熀纭鐨勪竴浜涙暟鎹被鍨嬪搴斿彲浠ョ湅涓嬪涓嬶細鍦∣bject-C鐨勫伐鍏烽噷闈㈠惂***.mm鍐欏ソ锛屾斁鍒Unity椤圭洰鐨凙ssets/Plugins/iOS涓嬮潰銆傦紙Unity2018鍙婁互涓婂彧瑕佹斁鍦ㄤ换鎰廼OS鐨勫す涓嬪嵆鍙級鍦–#閲岄潰鍐欎笂浠...
  • unity濡備綍淇敼鏄剧ず鐗╀綋璺濈
    绛旓細1銆侀鍏堟墦寮骞剁櫥褰unity銆2銆佸叾娆$偣鍑籗cene鐣岄潰浼氭湁鍊嶆暟淇敼鐨勬彁绀烘鍑虹幇銆3銆佹渶鍚庢寜涓媤asd鎸夐敭淇敼鏄剧ず鐗╀綋璺濈鍗冲彲銆Unity鏄竴涓敤绾C璇█缂栧啓鐨勬祴璇曞伐鍏凤紝绠娲佸疄鐢ㄥ搴旂敤浜庡祵鍏ュ紡绯荤粺锛孶nity宸ュ叿鍙互瑁佸壀鐢ㄤ簬鍚勭瑙勬ā鐨勫祵鍏ュ紡椤圭洰锛屽彧瑕佹槸绾疌璇█鐨勯」鐩甎nity閮藉彲浠ヤ娇鐢ㄣ
  • Unity寮曟搸鐨勭壒鐐规槸浠涔?
    绛旓細2銆侀潰鍚戠粍浠跺紑鍙戯紝涓嶅悓鐨勬父鎴忛」鐩紝鏁翠釜閫昏緫闇瑕佺敤C#閲嶆柊鍐欙紝浣嗘槸璧勬簮閮芥槸鍙互娌跨敤鍘熸潵椤圭洰鐨勩3銆佽法骞冲彴鎬э紝鍙渶涓閿嵆鍙畬鎴愪綔鍝佺殑澶氬钩鍙板紑鍙戝拰閮ㄧ讲锛屾敮鎸丳C銆佺Щ鍔ㄣ佷富鏈轰笁澶т笉鍚岀殑骞冲彴 4銆佸叆闂ㄧ畝鍗曪紝寮鍙戣瑷C#鐩稿浜C/C++鏇寸畝鍗曪紝鑰屼笖unity鐨勪娇鐢ㄥ凡鐩稿鎴愮啛锛屽涔犺棰戣緝澶 5銆佹敮鎸丄RVR锛孶3D鏄疄鐜癆R...
  • unity3d涓 濡備綍鐢–#瀹氫箟GetComponent("AutoRotation").speed鐨勭被鍨...
    绛旓細"AutoRotation");cmp2.speed+=10F;3銆丄utoRotation cmp3= GetComponent<AutoRotation>();print(cmp3.speed);Unity3D璇█鍙傝冨湪鑿滃崟锛欻elp=>Scripting Reference C#璧勬枡鍦ㄧ綉椤电増MSDN涓奾ttp://msdn.microsoft.com/zh-cn/library/kx37x362.aspx 寤鸿瑁卾isual studio 2010甯︾绾跨増msdn,(鎴戠敤杩欎釜)...
  • unity3d鏄共鍟ョ殑
    绛旓細鏁翠釜閫昏緫闇瑕佺敤C#閲嶆柊鍐欙紝浣嗘槸璧勬簮閮芥槸鍙互娌跨敤鍘熸潵椤圭洰鐨勶紱3銆佽法骞冲彴鎬э紝鍙渶涓閿嵆鍙畬鎴愪綔鍝佺殑澶氬钩鍙板紑鍙戝拰閮ㄧ讲锛屾敮鎸丳C銆佺Щ鍔ㄣ佷富鏈轰笁澶т笉鍚岀殑骞冲彴锛4銆佸叆闂ㄧ畝鍗曪紝寮鍙戣瑷C#鐩稿浜C/C++鏇寸畝鍗曪紝鑰屼笖unity鐨勪娇鐢ㄥ凡鐩稿鎴愮啛锛屽涔犺棰戣緝澶氾紱5銆佹敮鎸丄RVR锛孶3D鏄疄鐜癆RVR鏈涓绘祦鐨勫紑鍙戝紩鎿庛
  • 鍋Unity寮鍙戞槸鍏堝涔燙#杩樻槸瀛︿範C++
    绛旓細鏈C璇█鍩虹灏卞彲浠ヨ烦杩嘋++浜嗭紝C++娴垂鏃堕棿锛岃繕褰卞搷浣犲涔燙#锛岀洿鎺ュ涔燙#姣旇緝濂
  • 扩展阅读:unity全套教程 ... c和c#和c++区别 ... visual studio ... unity只能用c#开发吗 ... c#一般用来开发什么 ... 华为电池校正##0228 ... c#是什么 ... unity开发可以使用c++吗 ... c#学到多少可以学unity ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网