使用Unity3D 5.3.4 模仿2D游戏 FlappyBird(三)

来源:互联网 发布:淘宝网购物商城 编辑:程序博客网 时间:2024/05/18 01:57

继续上一篇的内容,我们已经可以玩游戏了,但是发现每次点击时,小鸟上升和下降有点不和谐。所以这里我们修改一下Bird这个脚本。

using UnityEngine;using System.Collections;public class Bird : MonoBehaviour {    private Rigidbody2D birdRig;    //获取Rigidbody2D组件    public float upSpeed = 5;   //定义点击时给小鸟的向上的力的大小    private bool flag = false;    //用来判断小鸟的向上速度是否减少到某个值    // Use this for initialization    void Start () {        birdRig = GetComponent<Rigidbody2D>();    }    // Update is called once per frame    void Update () {        //当按下空格键时        if (Input.GetKeyDown(KeyCode.Space))        {            //给小鸟添加一个向上的速度            birdRig.velocity = Vector2.up * upSpeed;            flag = true;           }        if (flag)        {            //因为向上的速度一直在减小,所以才导致小鸟飞到顶端时有一种飘忽的感觉,所以这里我们设定,当向上的速度小于1时,就给他添加一个向下的速度            if (birdRig.velocity.y <= 1)            {                birdRig.velocity = Vector2.down * 1.8f;                flag = false;            }        }    }}

现在重新运行游戏,玩起来是不是比以前感觉好多了。
在Inspector面板新建一个UI->Text,名字改为Score。修改它的一些属性,位置顶部居中,字体上下左右居中,内容为:”Scorre:”(不要引号)
这里写图片描述

然后再Scripts文件夹下新建GameManager脚本,给摄像机添加此脚本,用来管理游戏。编辑脚本:

using UnityEngine;using UnityEngine.UI;using System.Collections;public class GameManager : MonoBehaviour {    //把GameManager做成单例,这样就不用每次都获取对象    private static GameManager _instance;    public static GameManager Instance    {        get        {            return _instance;   //可以在其他类通过 _instance 访问该对象        }    }    public Text scoreText;   //得到分数的文本    private float score = 0;  //记录分数    void Awake ()    {        _instance = this;   //赋值该对象    }    //修改分数的方法    public void addScore ()    {        score++;  //分数加一        scoreText.text = "Score: " + score;  //设置显示的文本    }}

有些没用到的代码暂时删掉了。
修改Bird脚本,当小鸟碰撞到设置的collider_score时,增加分数。就添加了一个方法。

//进入触发器时,通俗的讲就是当小鸟碰撞到障碍中间的空碰撞器时    void OnTriggerEnter2D(Collider2D other)    {        //如果碰撞到的物体的tag是collider_score,用来判断碰撞到的是不是collider_score        if (other.tag == "collider_score")        {            //给碰撞到的物体发送一个消息,调用addScore方法            other.SendMessage("addScore");        }    }

这里需要给Prefabs文件夹–>pipe–>collider_score添加一个tag为collider_score。

Scripts文件夹下在新建一个ColliderScore,脚本选择Prefabs文件夹–>pipe–>collider_score添加此脚本。
编辑脚本:

using UnityEngine;using System.Collections;public class ColliderScore : MonoBehaviour {    //被小鸟碰撞时调用的方法    public void addScore ()    {        //通过单例模式调用增加分数的方法        GameManager.Instance.addScore();    }}

现在运行游戏,玩起来!!已经可以增加分数了!!!
还需要一点改进将在下一篇博客中继续讲解。
本博客用作新手学习讨论,如有不好或错误的地方也请指出来,谢谢。

原创粉丝点击