飞翔的小鸟(2D)

13 篇文章 0 订阅

飞翔的小鸟(2D)

1.障碍物移动
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BarrierMove : MonoBehaviour {

public float BarrierMoveSpeed = 50f;  //障碍物移动速度
// Use this for initialization
void Start()
{

}

// Update is called once per frame
void Update()
{
    this.transform.Translate(Vector3.left * BarrierMoveSpeed * Time.deltaTime);  //向左移动障碍物
    Vector3 poisiton = this.transform.position;  //获取当前位置
    if (poisiton.x <= 270f)
    {
        this.transform.position = new Vector3(poisiton.x + 200f , poisiton.y , poisiton.z);  //交替拼接(根据具体位置来确定数值)
    }
}

}
2.小鸟移动,失败碰撞检测
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class BireMove : MonoBehaviour {

public GameObject bire;
public GameObject over;  //游戏结束字体

public AudioSource music1;  //播放器
public AudioClip fly;  //飞翔音效

// Use this for initialization
void Start () {

    over.SetActive(false);
    music1 = GetComponent<AudioSource>();  //获取播放器
}

// Update is called once per frame
void Update() {
    if (Input.GetMouseButtonDown(0))  //点击鼠标左键移动(要增加阻力才可以)
    {
        Vector3 poisiton = bire.transform.position;  //获取当前位置
        bire.transform.position = new Vector3(poisiton.x, poisiton.y + 30f, poisiton.z);  //向上移动
        music1.clip = fly;  //设置音源
        //music1.loop = true;  //循环播放
        music1.Play();  //播放音源
    }     
}

private void FixedUpdate()  //键盘控制移动
{
    //float y = Input.GetAxis("Vertical");  //获取纵轴,WS上下移动
    //Vector3 move = new Vector3(0, y, 0);
    //GetComponent<Rigidbody2D>().velocity = move * 200;
}

private void OnCollisionStay2D(Collision2D collision)  //碰撞检测
{
    
    if (collision.gameObject.tag == "barrier")  
    {
        Destroy(gameObject);  //小鸟消失
        Sources.instance.Playaudioclip("draw");  //跌落音效
        over.SetActive(true);
        Time.timeScale = 0;  //时间暂停
    }
}   

}
3.得分(赋给小鸟)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Score : MonoBehaviour {

public Text score;  //游戏中显示
public Text score1;  //结束时显示
public int add = 0;
// Use this for initialization
void Start()
{

}

// Update is called once per frame
void Update()
{
    
}

private void OnTriggerExit2D(Collider2D collision)  //离开时
{
    if (collision.tag == "space")
    {
        add += 1;  //得分
        score.text = "得分:" + add;  //最终得分
        score1.text = "得分:" + add;
        Sources.instance.Playaudioclip("score");  //得分音效
    }
}

}
4.音效(赋给空物体即可)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Sources : MonoBehaviour {

public static Sources instance;   //可在其他脚本中调用
public AudioSource audioSource;  //播放器
public AudioClip[] audioClips;   //音效
Dictionary<string, AudioClip> dictionary = new Dictionary<string, AudioClip>();
// Use this for initialization
void Start () {
    instance = this;
    foreach (AudioClip clip in audioClips)
    {
        dictionary.Add(clip.name, clip);   //将所有名字和音效添加到字典
    }
}

public void Playaudioclip(string audioname)   //播放音效
{
    if (dictionary.ContainsKey(audioname))   //判断字典中的key值是否包含所用音效
    {
        AudioClip clip = dictionary[audioname];
        audioSource.clip = clip;    //若包含则播放此音效
        audioSource.Play();
    }
}

// Update is called once per frame
void Update () {
	
}

}
5.游戏暂停(赋给任意一个即可)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Timescale : MonoBehaviour {

//时间对场景中所有物体生效,可赋给任一物体
public Text time;
public Button play;  //按键开始
// Use this for initialization
void Start () {

    Time.timeScale = 0;  //时间暂停
    play.onClick.AddListener(VClick);  //点击执行函数  
}

public void VClick()
{
    play.gameObject.SetActive(false);  //隐藏
    Time.timeScale = 1;  //时间进行(大于1,时间飞逝,小于1,时间减缓)
}

// Update is called once per frame
void Update () {

    if (Input.GetKeyDown(KeyCode.P))
    {
        Time.timeScale = 0;  //时间暂停
        play.gameObject.SetActive(true);
    }
    if (Input.GetMouseButtonDown(0))  //点击鼠标左键
    {

        time.text = "时间:" + Time.time;  //当前时间
    }
}

/*private void FixedUpdate()
{
    transform.Translate(Vector3.up, Space.World);  //控制物体停止/前进
}*/

}
6.再来一局
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement; //转化场景

public class Tran : MonoBehaviour
{
public Button again;
// Use this for initialization
void Start()
{
again.onClick.AddListener(tran1); //点击执行函数
}

// Update is called once per frame
void Update()
{

}
public void tran1()
{
    SceneManager.LoadScene("bire");  //转换场景
}

}
7.给小鸟添加碰撞体(要添加阻力)
在这里插入图片描述
在这里插入图片描述
8.给障碍物添加碰撞体(上,下,中)
在这里插入图片描述
9.建立空物体,赋音效脚本
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值