继续上一篇的内容,我们已经可以玩游戏了,但是发现每次点击时,小鸟上升和下降有点不和谐。所以这里我们修改一下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();
}
}
现在运行游戏,玩起来!!已经可以增加分数了!!!
还需要一点改进将在下一篇博客中继续讲解。
本博客用作新手学习讨论,如有不好或错误的地方也请指出来,谢谢。