C # et Unity développent Angry Birds (1)

Aujourd'hui, j'écris une première étape d'Angry Birds. Si vous y avez joué, vous pouvez aller sur différentes plateformes de jeu pour y jouer. Le développement C # et Unity sont utilisés.
J'utilise la version Unity2018 .
Voici les matériaux à utiliser et donnez-vous le lien: Lien: https://pan.baidu.com/s/1oFXvnuIvdaB27Us_rPiLbg
Code d'extraction: n1fz
Tout d'abord, créez l'interface de démarrage du jeu, utilisez l'interface utilisateur pour construire, l' Insérez la description de l'image ici
arrière - plan peut être déplacé vers l'arrière, en commençant Pour le rôle de la boucle sans fil,
certains sont illustrés ci-dessous 背景移动的代码.

public class Move : MonoBehaviour {
    
    

	void Update () {
    
    
		transform.Translate(Vector3.left* Time.deltaTime * 100);
        if (transform.position.x <= 100)
        {
    
    
			transform.position = new Vector2(600,170);
        }
	}
}

Faites glisser le code dans l'
interface utilisateur
Insérez la description de l'image ici
Insérez la description de l'image ici
d' arrière-plan pour atteindre; cliquez sur le bouton Démarrer le jeu pour passer à la deuxième interface pour atteindre le saut d'interface

La deuxième étape consiste à créer une interface pour sélectionner les niveaux de jeu et changer de scène .
Insérez la description de l'image ici
Le bouton de retour dans le coin inférieur gauche est le même que le saut du bouton de démarrage du jeu,
Insérez la description de l'image ici
ici est toujours glisser dans l'interface du niveau de sélection, ne cochez pas, cachez l'interface, cela équivaut à afficher l'interface de démarrage du jeu, vous pouvez aller sur le bouton de recherche pour sauter, pas ici Parler en détail.

Créez une nouvelle scène et commencez à écrire le code de la scène de saut

public class Skip : MonoBehaviour {
    
    

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

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

Faites glisser le code dans le bouton à sauter
Insérez la description de l'image ici
pour pouvoir y parvenir.
La troisième étape consiste à créer l' interface de jeu , à utiliser l' assistant et à faire glisser les matériaux ci-dessus directement dans la section des ressources;
Insérez la description de l'image ici
commencez par créer une telle scène, commencez à utiliser et à écrire du code, afin que l'oiseau puisse glisser avec la souris, limiter la distance de traînée et lancer une fronde. Ligne
et l'oiseau suivant sur la fronde.

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

C'est le composant que l'oiseau doit ajouter, et les deux composants de ressort encadrés ont besoin de tout le monde pour expérimenter et déboguer.
Insérez la description de l'image ici
Le code de Piggy et les composants dont Piggy a besoin

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

Les composants de Piggy
Insérez la description de l'image ici

Créez un GameObject vide, créez un code GameManager, le code est le suivant

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

Le code principal est presque terminé, commençons à créer des animations et des atlas de recadrage. Après
Insérez la description de l'image ici
Insérez la description de l'image ici
avoir terminé le recadrage, vous pouvez ajuster le module de recadrage vous-même.
Faire une animation
Insérez la description de l'image ici
Appuyez sur Ctrl pour sélectionner l'image dont vous avez besoin, et après la sélection, maintenez la touche Ctrl enfoncée et faites-la glisser dans le panneau de ressources.
Insérez la description de l'image ici
Afin de faciliter la gestion du dossier d'animation créé, insérez-le;
Insérez la description de l'image ici
cochez-le pour jouer en boucle, et le porcelet peut jouer une fois lorsqu'il meurt.
Cliquez sur l'animation, appuyez sur Ctrl + 6 et le panneau de gestion de l'animation apparaîtra. Une
Insérez la description de l'image ici
Insérez la description de l'image ici
fois terminé, créez un nouveau dossier, faites glisser l'animation
directement dans l' image de la partition et placez-la dans le dossier.
Code d'animation d'explosion

public class boom : MonoBehaviour {
    
    

	public void Boom()
    {
    
    
		Destroy(gameObject);
    }
}

Pour plus de détails, vous pouvez m'envoyer un message ou un commentaire privé. Bienvenue à tous.
Ce premier Angry Birds est presque le même, et sera mis à jour plus tard, j'espère que vous y porterez plus d'attention! ! !

Je suppose que tu aimes

Origine blog.csdn.net/m0_47605113/article/details/109216649
conseillé
Classement