今天寫一個憤怒的小鳥的初步,么玩過的可以去各大小游戲平臺玩玩,用到的是c#和Unity開發,
我用的是Unity2018版,
下面是要用到的素材,把鏈接給大家:鏈接:https://pan.baidu.com/s/1oFXvnuIvdaB27Us_rPiLbg
提取碼:n1fz
首先,創建游戲開始界面,使用UI搭建,
背景可以向后移動,起到無線回圈的作用,
下面展示一些 背景移動的代碼,
public class Move : MonoBehaviour {
void Update () {
transform.Translate(Vector3.left* Time.deltaTime * 100);
if (transform.position.x <= 100)
{
transform.position = new Vector2(600,170);
}
}
}
將代碼拖入背景ui即可實作;
點擊開始游戲按鈕跳轉第二個界面


即可實作界面跳轉
第二步搭建選擇游戲關卡界面和切換場景功能,

左下角的回傳鍵和開始游戲按鈕的跳轉是一樣的,

這里還是拖入選擇關卡界面,不打對勾,隱藏界面,就等于顯示開始游戲界面,可以去搜搜按鈕跳轉,這里就不詳細講了,
創建一個新的場景,開始寫跳轉場景代碼
public class Skip : MonoBehaviour {
// Use this for initialization
void Start () {
this.GetComponent<Button>().onClick.AddListener(OnClicke);
}
void OnClicke() {
SceneManager.LoadScene("Game");
}
}
將代碼拖入需要實作跳轉的按鈕

這樣就可以實作了,
第三步,搭建游戲界面,使用精靈,上面的素材直接拖入到資源板塊即可;

先搭建這樣的場景,開始操作寫代碼,使小鳥可以隨滑鼠拖拽、限制拖拽距離、彈弓劃線
以及下一個小鳥上彈弓,
public class Bird : MonoBehaviour {
private bool isClick = false ;
private float maxDis = 1.5f;
public SpringJoint2D Sj;
private Rigidbody2D Rb;
public LineRenderer right;
public Transform rightPos;
public LineRenderer left;
public Transform leftPos;
public GameObject boom;
void Start()
{
Sj = GetComponent<SpringJoint2D>();
Rb = GetComponent<Rigidbody2D>();
}
// Use this for initialization
private void OnMouseDown()//滑鼠按下
{
isClick = true;
Rb.isKinematic = true;
}
private void OnMouseUp()//滑鼠抬起
{
isClick = false;
Rb.isKinematic = false;
Invoke("Fly", 0.1f);
right.enabled = false;
left.enabled = false;
}
// Update is called once per frame
void Update ()
{
if (isClick)
{
transform.position = Camera.main.ScreenToWorldPoint(Input.mousePosition);//讓小鳥被滑鼠拖拽
transform.position += new Vector3(0,0, -Camera.main.transform.position.z);
if (Vector3.Distance(transform.position,rightPos.position) > maxDis)//限制拖拽距離
{
Vector3 pos = (transform.position - rightPos.position).normalized;
pos *= maxDis;
transform.position = pos + rightPos.position;
}
Line();
}
}
void Line()//彈弓劃線
{
right.enabled = true;
left.enabled = true;
right.SetPosition(0, rightPos.position);
right.SetPosition(1, transform.position);
left.SetPosition(0, leftPos.position);
left.SetPosition(1, transform.position);
}
void Fly()//滑鼠抬起,小鳥飛出
{
Sj.enabled = false;
Invoke("Next", 5);
}
void Next() {//將飛出的小鳥銷毀,下一個小鳥上彈弓
GameManager._isstance.birds.Remove(this);
Destroy(gameObject);
Instantiate(boom, transform.position, Quaternion.identity);
GameManager._isstance.NextBird();
}
}
這個是小鳥需要添加的組件,彈簧組件框出來的兩個需要大家去實驗除錯,

小豬的代碼以及小豬需要的組件
public class Pig : MonoBehaviour {
private int MaxSpeed = 10;
private int MinSpeed = 5;
private SpriteRenderer render;
public Sprite hurt;
public GameObject boom;
public GameObject score;
public bool _isPig;
// Use this for initialization
void Start () {
render = GetComponent<SpriteRenderer>();
}
private void OnCollisionEnter2D(Collision2D collision)//碰撞機制
{
if (collision.relativeVelocity.magnitude > MaxSpeed)//通過速度來判斷小豬受傷還是死亡
{
bead();
}
else if (collision.relativeVelocity.magnitude > MinSpeed && collision.relativeVelocity.magnitude < MaxSpeed)
{
render.sprite = hurt;
}
}
public void bead()//小豬死亡播放影片
{
if (_isPig)
{
GameManager._isstance.pigs.Remove(this);
}
Destroy(gameObject);
Instantiate(boom, transform.position, Quaternion.identity);
GameObject go = Instantiate(score, transform.position + new Vector3(0,0.5f,0), Quaternion.identity);
Destroy(go, 1f);
}
}
小豬的組件

創建一個GameObject空物體,創建一個GameManager代碼,代碼如下
public class GameManager : MonoBehaviour {
public List<Bird> birds;
public List<Pig> pigs;
private Vector3 originPos;
public static GameManager _isstance;
// Use this for initialization
void Start () {
_isstance = this;
Initialized();
if (birds.Count > 0)
{
originPos = birds[0].transform.position;
}
}
public void Initialized()
{
for (int i = 0; i < birds.Count; i++)
{
if (i == 0)
{
birds[i].transform.position = originPos;
birds[i].enabled = true;
birds[i].Sj.enabled = true;
}
else
{
birds[i].enabled = false ;
birds[i].Sj.enabled = false ;
}
}
}
public void NextBird()
{
if (pigs.Count >0)
{
if (birds.Count > 0)
{
Initialized();
}
else
{
}
}
else
{
//贏
}
}
// Update is called once per frame
void Update () {
}
}
主要代碼差不多了,下面開始創建影片和裁剪圖集


做完即裁剪完成,可自己調節裁剪模塊,
做影片

按住Ctrl選擇自己需要的圖片,選擇完畢后按住Ctrl拖入資源面板,

以方便管理創建影片檔案夾放入;

打勾是回圈播放,小豬死亡播放一次即可,
點擊影片,按Ctrl+6,彈出影片管理面板


完成后創建一個新的檔案夾,將影片拖入
得分圖片直接拖出,放入檔案夾,
爆炸影片代碼
public class boom : MonoBehaviour {
public void Boom()
{
Destroy(gameObject);
}
}
細節可以私信我或評論,歡迎大家
這樣初步的憤怒的小鳥就差不多了,后續還會更新,望大家多多關注!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/187996.html
標籤:AI
