码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-02-11 20:20:21      阅读:421      评论:0      收藏:0      [点我收藏+]

标签:

自制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)上得到工程源码。

请多多指教~

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

标签:

原文地址:http://www.cnblogs.com/bitzhuwei/p/tank-hero-2d-5-level-explosion-scenes-weapons.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!