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