C#と団結はAngry Birdsを開発します(1)

今日はAngryBirdsの初期段階を書いています。プレイしたことがあれば、さまざまなゲームプラットフォームにアクセスしてプレイできます。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にドラッグして達成します。
ゲーム開始ボタンをクリックして、2番目のインターフェース
ここに写真の説明を挿入
ここに写真の説明を挿入
にジャンプし、インターフェースジャンプを達成します。

2番目のステップは、ゲームレベル選択しシーン機能切り替えるためのインターフェイスを構築することです。
ここに写真の説明を挿入
左下隅の戻るボタンは、ゲーム開始ボタンのジャンプと同じ
ここに写真の説明を挿入
です。ここでも、選択レベルのインターフェイスにドラッグします。チェックマークを付けず、インターフェイスを非表示にします。これは、ゲーム開始インターフェイスを表示するのと同じです。ここではなく、検索ボタンに移動してジャンプできます。詳細に言えば。

新しいシーンを作成し、ジャンプシーンコードの記述を開始します

public class Skip : MonoBehaviour {
    
    

	// Use this for initialization
	void Start () {
    
    
		this.GetComponent<Button>().onClick.AddListener(OnClicke);
	}

	void OnClicke() {
    
    
		SceneManager.LoadScene("Game");
	}
}

ジャンプする必要があるボタンにコードをドラッグして、
ここに写真の説明を挿入
達成できるようにします。
3番目のステップは、ゲームインターフェイスを構築しウィザードを使用して、上記の資料をリソースセクションに直接ドラッグすることです。
ここに写真の説明を挿入
最初にそのようなシーンを構築し、操作とコードの記述を開始して、鳥がマウスでドラッグできるようにし、ドラッグ距離を制限し、スリングショットします。ライン
とスリングショットの次の鳥。

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();
    }
}

これは鳥が追加する必要があるコンポーネントであり、フレーム化された2つのスプリングコンポーネントは、全員が実験とデバッグを行う必要があります。
ここに写真の説明を挿入
PiggyのコードとPiggyに必要なコンポーネント

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);
    }
}

詳しくは、プライベートメッセージやコメントを送ってください。みなさん、ようこそ
。最初のアングリーバードはほぼ同じですが、後で更新しますので、よろしくお願いします!

おすすめ

転載: blog.csdn.net/m0_47605113/article/details/109216649