飞翔的小鸟(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.建立空物体,赋音效脚本