自制Unity小游戏TankHero-2D(5)声音+爆炸+场景切换+武器弹药

自制Unity小游戏TankHero-2D(5)声音+爆炸+场景切换+武器弹药

我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的。仅为学习Unity之用。图片大部分是自己画的,少数是从网上搜来的。您可以到我的github页面(https://github.com/bitzhuwei/TankHero-2D)上得到工程源码。

本篇主要记录声音、场景切换、武器弹药等。

关于碰撞

先插一句。上一篇记录了Unity3D的碰撞相关的试验结论。但太过漫长,不实用,经过整理,我总结了如下几句。

Rigidbody组件的作用是:接收外力,从而使自身像物理中的刚体一样运动;对其它物体产生力。

若Rigidbody的IsKinimatic为true,则不再接收外力;但会继续对其它物体产生力。

Collider组件的作用是:划定一个空间范围(一个矩形、球形、网格等),Rigidbody组件会检测两个物体的Collider是否发生重合(Enter)持续(Stay)或退出(Exit),并激发双方的Collision事件。如果Collider的Is Trigger为true,则激发双方的Trigger事件。

总之,场景中不断运动的物体,需要Rigidbody,始终静止的物体,不需要Rigidbody。

声音

场景里要有1个Audio Listener才能听到声音。距离Audio Listener近的AudioSource发出的声音才能被听到。

背景音乐一般放到主摄像机上。

偶尔才发出的声音,比如捡到金币时发出"叮"地声响。直接用AudioSource.PlayClipAtPoint方法就可以。


void OnTriggerEnter2D(Collider2D other)

{

if (other.tag != Tags.hero) { return; }

AudioSource.PlayClipAtPoint(pickedAudioClip, this.transform.position, 0.2f);

MonoBehaviour.Destroy(this.gameObject);

}

在持有AudioSource组件的对象上,可以看到一个喇叭,很好玩。这个坦克移动的时候,喇叭也跟着动了。

场景切换

场景切换时我希望一直保留某个对象,比如游戏控制器这种全局的东西。在脚本里用DontDestroyOnLoad就可以了。


void Awake()

{

if (instance == null)

{

instance = this;

DontDestroyOnLoad(this.gameObject);

}

else

{

Destroy(this.gameObject);

}

}

武器弹药

武器和子弹分别做成prefab,可以自由组合。在Inspector里也比较方便配置了。

总结

您可以到我的github页面(https://github.com/bitzhuwei/TankHero-2D)上得到工程源码。

请多多指教~

时间: 2024-08-06 17:30:14

自制Unity小游戏TankHero-2D(5)声音+爆炸+场景切换+武器弹药的相关文章

自制Unity小游戏TankHero-2D(3)开始玩起来

自制Unity小游戏TankHero-2D(3)开始玩起来 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的.仅为学习Unity之用.图片大部分是自己画的,少数是从网上搜来的.您可以到我的github页面(https://github.com/bitzhuwei/TankHero-2D)上得到工程源码. 本篇主要记录金币.按钮.坦克工厂.小地图等小部件,让整个场景初步成为一个可玩的游戏. 在本篇在制作过程中,

自制Unity小游戏TankHero-2D(4)关卡+小地图图标+碰撞条件分析

自制Unity小游戏TankHero-2D(4)关卡+小地图图标+碰撞条件分析 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的.仅为学习Unity之用.图片大部分是自己画的,少数是从网上搜来的.您可以到我的github页面(https://github.com/bitzhuwei/TankHero-2D)上得到工程源码. 本篇主要记录关卡解析器.小地图图标和对碰撞的原理的探索,需要耐心分析. 关卡解析器 在

自制Unity小游戏TankHero-2D(1)制作主角坦克

我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的.仅为学习Unity之用.图片大部分是自己画的,少数是从网上搜来的.您可以到我的github页面(https://github.com/bitzhuwei/TankHero-2D)上得到工程源码. 本篇主要记录制作主角坦克(TankHero)的一些重点. 2D游戏布局 如上图所示,红色矩形围起来的是主角坦克,白色的一圈是围墙,坦克和围墙在同一平面上.地面背景放到

自制Unity小游戏TankHero-2D(2)制作敌方坦克

我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm)这个游戏制作的.仅为学习Unity之用.图片大部分是自己画的,少数是从网上搜来的.您可以到我的github页面(https://github.com/bitzhuwei/TankHero-2D)上得到工程源码. 本篇主要记录制作敌方坦克(Tank1)的一些重点. 原本制作敌方坦克是很简单的,只要把TankHero复制一份,改改贴图就差不多了.不过考虑到代码的简洁和可重用,本篇

Java自制人机小游戏——————————剪刀、石头、布

package com.hello.test; import java.util.Scanner; public class TestGame { public static void main(String[] args) { Player p = new Player() ; //实例化玩家对象 Game g = new Game(p) ;//实例化游戏对象 g.startGame();//调用方法 } } //游戏类 class Game { private Player p ; //设置

unity + win8.1 apps 小游戏demo

unity3d用的人挺多...本来想写个3d游戏试试..额..貌似挺麻烦.. .....先用unity写个简单的2d游戏吧.. (adsw回车  或者  触摸屏虚拟摇杆) 开发环境 unity4.5.1f3      vs2013 express       win8.1 实现方法如下 1.创建自己的坦克Sprite 2.创建敌方坦克Prefab 3.创建子弹Prefab 4.添加虚拟摇杆 5.碰撞检测 具体实现 1.控制自己坦克的代码 if (Input.GetKey (KeyCode.W))

Canvas 2D小游戏开发总结-1

由于需要快速开发 在拿到需求时,并没有时间去学习Cocos2d-JS\Egret\lufy legend这样的H5游戏引擎 于是硬着头皮直接用js建模.响应用户.渲染画面 在此要感谢这篇文章http://www.lostdecadegames.com/how-to-make-a-simple-html5-canvas-game/给我的启发 然后我罗列一下开发过程中遇到的问题,以便更好地完善自己的游戏框架 1.按钮问题dom vs canvas 有时候有代码洁癖,会觉得用canvas做代码看起来干

2D命令行小游戏Beta1.0_代码

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _2D命令行小游戏Beta1_0 { class Game { public Game(int scale) { _scale = scale; peox = 1; peoy = 1; map = new int[_scale, _scale];

大大维的游戏机计划2--一个自制的类似2048的小游戏

承接上篇,这几日,笔者本来打算写一个2048的,但写着写着,突然有个想法,能不能搞一个将2048和消消乐结合起来的游戏,于是,笔者便写出了如下这个小游戏. 值得一提的是,整个游戏完全由笔者独自写成,并没有参考任何网上的代码,这跟上次写贪吃蛇前学了老半天网上已有代码就显得独立了很多.看来贪食蛇的书写还是让笔者受益匪浅 定义的游戏规则如下: 1.采用类似2048的游戏规则合成数字 2.加入消消乐的点选作用(类似于在PC端模拟了一下触摸屏) 3.加入地图压缩规则 4.由于游戏像2048,就叫他NEW2