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'
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
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 .
Le bouton de retour dans le coin inférieur gauche est le même que le saut du bouton de démarrage du jeu,
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
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;
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.
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
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
avoir terminé le recadrage, vous pouvez ajuster le module de recadrage vous-même.
Faire une animation
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.
Afin de faciliter la gestion du dossier d'animation créé, insérez-le;
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
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! ! !