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

继续上一篇的内容,我们已经可以玩游戏了,但是发现每次点击时,小鸟上升和下降有点不和谐。所以这里我们修改一下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();
    }
}

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值