zoukankan      html  css  js  c++  java
  • 自制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)上得到工程源码。

    请多多指教~

  • 相关阅读:
    thymeleaf常用属性
    spring的jdbcTemplate的使用
    spring使用thymeleaf
    thymeleaf介绍
    struts2请求过程源码分析
    Git 学习笔记之(三)将本地工程导入到GitHub 仓库中
    spring boot 学习笔记(三)之 配置
    Zookeeper 学习笔记(一)之功能介绍
    Git 学习笔记之(一) 使用 git gui 从github上下载代码
    Linux 清理空间
  • 原文地址:https://www.cnblogs.com/bitzhuwei/p/tank-hero-2d-5-level-explosion-scenes-weapons.html
Copyright © 2011-2022 走看看