使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(四)
来源:互联网 发布:淘宝网购物商城 编辑:程序博客网 时间:2024/06/05 02:51
继续上一篇的博客,我们继续完善游戏。先给游戏添加音效。每当小鸟碰撞障碍,加分的碰撞器,和地板时,点击空格时,都应该有音效播放。选择Prefabs–>pipe,展开箭头给两个pipe添加tag,tag名字为obstacle(collider_score
已经添加过了,不用添加),选择bg–>back也设置这个tag。
给小鸟添加一个AudiSource组件,取消PlayOnAwake的勾选。现在来修改Bird这个脚本,实现播放音效。
public class Bird : MonoBehaviour { //用来获取小鸟要播放的音效,记得从文件夹中拖入相关的音频,使用时对应修改索引 public AudioClip[] birdAudio; private AudioSource birdAudioSource; //用来获取小鸟身上的声音源 // Use this for initialization void Start () { birdAudioSource = GetComponent<AudioSource>(); } // Update is called once per frame void Update () { //当按下空格键时 if (Input.GetKeyDown(KeyCode.Space)) { //当点击空格时播放sfx_wing音效 birdAudioSource.clip = birdAudio[2]; birdAudioSource.Play(); } } //进入碰撞器,也就是当小鸟碰撞到其他东西时 void OnCollisionEnter2D(Collision2D collision) { if (collision.collider.tag == "obstacle") { //当碰撞到障碍或地板时播放sfx_hit音效 birdAudioSource.clip = birdAudio[1]; birdAudioSource.Play(); } }}
注意:为了篇幅考虑,这里只给出了增加的代码,只需要添加进原来代码对应的位置就行。
现在运行虽然能正常播放声音,但是加分的声音不太好处理,因为小鸟共用一个声音源,当小鸟播放加分的声音时,我们依然在点击空格键,播放的声音会立即改变,声音播放的不完整,我想到的解决办法是:给Prefab–>pipe–>collider_score 添加一个AudioSource,取消play on awake,拖音频sfx_point进去,然后修改Bird脚本
//进入触发器时,通俗的讲就是当小鸟碰撞到障碍中间的空碰撞器时 void OnTriggerEnter2D(Collider2D other) { //如果碰撞到的物体的tag是collider_score,用来判断碰撞到的是不是collider_score if (other.tag == "collider_score") { //给碰撞到的物体发送一个消息,调用playScoreAudio方法 other.SendMessage("playScoreAudio"); //给碰撞到的物体发送一个消息,调用addScore方法 other.SendMessage("addScore"); } }
和ColliderScore脚本
using UnityEngine;using System.Collections;public class ColliderScore : MonoBehaviour { private AudioSource scoreAudio; //获取加分时的声音 void Start() { scoreAudio = GetComponent<AudioSource>(); } //被小鸟碰撞时调用的方法 public void addScore () { //通过单例模式调用增加分数的方法 GameManager.Instance.addScore(); } //被小鸟碰撞时调用播放声音的方法 public void playScoreAudio () { scoreAudio.Play(); }}
现在播放声音就不会有问题了。
现在游戏基本完成了,但是还有一个小问题,就是当小鸟碰撞到障碍时会被往后移动,我们可以锁住他的x轴就行了,选中bird,设置如下
然后,这个博客就写到这里,主要是为了巩固以前学的知识,也为了一些想学的新手一个学习教程(虽然我也是新手0_0!)。
欢迎大家查看,有错的地方也请指教。
http://pan.baidu.com/s/1sltbjAX 密码:ypxm
文件工程以上传。
- 使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(四)
- 使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(四)
- 使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(一)
- 使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(二)
- 使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(三)
- 使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(一)
- 使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(二)
- 使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(三)
- Unity制作2D游戏FlappyBird
- 基于Unity3D的2d拾宝游戏(四)
- Unity3D 2D游戏开发 官方教程。(四)
- Unity3D UNET 模仿局域网游戏(一)
- Unity3D UNET 模仿局域网游戏(二)
- Unity3D UNET 模仿局域网游戏(三)
- Unity3D游戏开发之使用Unity3D开发2D游戏(二)(2DTookit插件亲测)
- Unity3D游戏开发之使用Unity3D开发2D游戏(二)(2DTookit插件亲测)
- Unity3D游戏开发之使用Unity3D开发2D游戏(二)(2DTookit插件亲测)
- Unity3D FlappyBird
- 过滤器总结
- 使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(三)
- 你不可不知的final(3)-初始化时机(失手率比较高的一道面试题)
- python集合的处理
- Ajax的使用和函数的编写
- 使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(四)
- 时间线程Timer
- C#设计模式之工厂方法模式(Factory Method Pattern)
- Android状态栏适配源码解析。
- Arithmetic Slices——Difficulty:Memium
- Codeforces Round #237 (Div. 2)-D. Minesweeper 1D
- 监听器总结
- JavaScript面向对象-原型的内存模型
- python输入输出的处理