使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(四)
2016-10-17 19:00
435 查看
继续上一篇的博客,我们继续完善游戏。先给游戏添加音效。每当小鸟碰撞障碍,加分的碰撞器,和地板时,点击空格时,都应该有音效播放。选择Prefabs–>pipe,展开箭头给两个pipe添加tag,tag名字为obstacle(collider_score
已经添加过了,不用添加),选择bg–>back也设置这个tag。
给小鸟添加一个AudiSource组件,取消PlayOnAwake的勾选。现在来修改Bird这个脚本,实现播放音效。
注意:为了篇幅考虑,这里只给出了增加的代码,只需要添加进原来代码对应的位置就行。
现在运行虽然能正常播放声音,但是加分的声音不太好处理,因为小鸟共用一个声音源,当小鸟播放加分的声音时,我们依然在点击空格键,播放的声音会立即改变,声音播放的不完整,我想到的解决办法是:给Prefab–>pipe–>collider_score 添加一个AudioSource,取消play on awake,拖音频sfx_point进去,然后修改Bird脚本
和ColliderScore脚本
现在播放声音就不会有问题了。
现在游戏基本完成了,但是还有一个小问题,就是当小鸟碰撞到障碍时会被往后移动,我们可以锁住他的x轴就行了,选中bird,设置如下
![](http://img.blog.csdn.net/20160430225749619)
然后,这个博客就写到这里,主要是为了巩固以前学的知识,也为了一些想学的新手一个学习教程(虽然我也是新手0_0!)。
欢迎大家查看,有错的地方也请指教。
http://pan.baidu.com/s/1sltbjAX 密码:ypxm
文件工程以上传。
已经添加过了,不用添加),选择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系列教程–使用免费工具在Unity3D中开发2D游戏 第二节(上)
- 工具设置Unity3D系列教程--使用免费工具在Unity3D中开发2D游戏 第一节
- Unity3d Platformer Pro 2D游戏开发框架使用教程
- U3d学习-使用Unity3D开发2D游戏(上)
- Unity3D游戏开发之使用Unity3D开发2D游戏(二)(2DTookit插件亲测)
- unity3d开发2d游戏时注意使用Assetbundle
- Unity3D系列教程--使用免费工具在Unity3D中开发2D游戏 第一节
- unity3d开发2d游戏关于Assetbundle的使用
- 工具设置Unity3D系列教程--使用免费工具在Unity3D中开发2D游戏 第一节
- Unity3D系列教程–使用免费工具在Unity3D中开发2D游戏 第二节(下)
- Unity3D系列教程–使用免费工具在Unity3D中开发2D游戏 第三节
- Unity3D系列教程--使用免费工具在Unity3D中开发2D游戏 第一节
- Unity3D系列教程--使用免费工具在Unity3D中开发2D游戏 第一节