Caso principal de Unity - Angry Birds: 6:17 Mostrar el sistema de partículas antes de la interfaz de usuario +18 Dejar que las estrellas se muestren una por una +19 Agregar animación de pausa

contenido

Primero, el propósito

1. Wonder: Angry Birds: Cómo hacer

2. Toma notas de estudio para que puedas revisarlas la próxima vez

2. Referencia

1. Academia SIKI

3. Atención

1. Versión

Acción: 1:17 Pon el sistema de partículas antes que la interfaz de usuario

1. Introducción al conocimiento

1. Configure el sistema de partículas para que se muestre antes de la interfaz de usuario

Operación: 2:18 Haz que las estrellas aparezcan una a una

1. Retire la cámara 

1. Código: aparece la estrella

1. Resultado de ejecución: éxito

Cómo: 3:19 Agregar animación de pausa

1. Resuelva el problema del informe de errores

1. Código: Pájaro

1. Solucionar error: Listo

1. Usa pájaros y cerdos como casas prefabricadas

1. Haz un botón de pausa

1. Hacer una interfaz de interfaz de usuario de pausa

1. Producción: pausa la animación de la interfaz de usuario que aparece

1. Producción: animación de vuelta al juego.

 1. Agregue el componente del botón al ícono del botón


Primero, el propósito

1. Wonder: Angry Birds: Cómo hacer

2. Toma notas de estudio para que puedas revisarlas la próxima vez

2. Referencia

1. Academia SIKI

Iniciar sesión - SiKi Academy - ¡La vida es interminable, el aprendizaje es infinito!

bueno: URL para aprender

3. Atención

1. Versión

  1. Unidad2017.2.0f3
  2. VS2019
  3. UnityHUB 2.5.6

Acción: 1:17 Pon el sistema de partículas antes que la interfaz de usuario

1. Introducción al conocimiento

1. Configure el sistema de partículas para que se muestre antes de la interfaz de usuario

Operación: 2:18 Haz que las estrellas aparezcan una a una

1. Retire la cámara 

1. Código: aparece la estrella

1. Resultado de ejecución: éxito

Cómo: 3:19 Agregar animación de pausa

1. Resuelva el problema del informe de errores

1. Código: Pájaro

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/// <summary>
/// 【Author:xzy;Time:2021-12-28】
/// Function:小鸟身上的代码
/// </summary>
public class Bird : MonoBehaviour
{
    /// <summary>bool:是否点击</summary>
    private bool bIsClick = false;

    /// <summary>float:计算鸟和弹弓的距离的最大值</summary>
    public float fMaxdis = 3;

    /// <summary>SpringJoint2D:鸟身上弹簧的组件</summary>
    [HideInInspector]
    public SpringJoint2D sp;

    /// <summary>Rigidbody2D:鸟身上的物理组件</summary>
    [HideInInspector]
    private Rigidbody2D rg;

    /// <summary>Transform:弹弓右边的位置,目的:方便计算鸟和弹弓的距离</summary>
    public Transform rightPos;

    /// <summary>Transform:弹弓左边的位置,目的:方便划线【课程08弹弓画线操作:添加】</summary>
    public Transform leftPos;

    /// <summary>LineRenderer:弹弓右边的划线组件【课程08弹弓画线操作:添加】</summary>
    public LineRenderer right;

    /// <summary>LineRenderer:弹弓左边的划线组件【课程08弹弓画线操作:添加】</summary>
    public LineRenderer left;

    /// <summary>GameObject:特效【10游戏逻辑的判定,实现多只小鸟的飞出:添加】</summary>
    public GameObject boom;

    /// <summary>TestMyTrail:拖尾【12 - 添加小鸟飞出的拖尾效果:添加】</summary>
    private TestMyTrail myTrail;

    /// <summary>bool:是否可以移动【19添加暂停动画:添加】</summary>
    private bool bIsCanMove = true;

    private void Awake()
    {
        sp = this.GetComponent<SpringJoint2D>();//获取小鸟的弹簧组件
        rg = this.GetComponent<Rigidbody2D>();//获取小鸟身上的物理组件
        myTrail = GetComponent<TestMyTrail>();//获取组件【12 - 添加小鸟飞出的拖尾效果:添加】
    }

    /// <summary>
    ///【Author:xzy;Time:2021-12-28】
    /// Function: 鼠标按下
    /// </summary>
    private void OnMouseDown()
    {
        if (bIsCanMove)//【19添加暂停动画:添加】
        {
            bIsClick = true;
            rg.isKinematic = true;//按下小鸟,让其物理组件的动力学开启,从dynamic到kinematic
        }
    }

    /// <summary>
    ///【Author:xzy;Time:2021-12-28】
    /// Function: 鼠标抬起
    /// </summary>
    private void OnMouseUp()
    {
        if (bIsCanMove)//【19添加暂停动画:添加】
        {
            bIsClick = false;
            rg.isKinematic = false;//松开小鸟,让其物理组件的动力学关闭
            Invoke("Fly", 0.1f);//定时器:唤醒 小鸟飞出的逻辑

            right.enabled = false;//禁用画线组件【11解决重复划线和小鸟轮换速度突然变大的问题:添加】
            left.enabled = false;

            bIsCanMove = false;//【19添加暂停动画:添加】
        }
    }

    private void Update()
    {
        if (bIsClick)
        {
            //鼠标按下,进行位置的跟随,屏幕坐标转换为世界坐标
            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) > fMaxdis)
            {
                Vector3 pos = (transform.position - rightPos.position).normalized;  //单位化向量:获取方向,鸟的向量减去右边弹弓的位置的向量
                pos *= fMaxdis; //最大长度的向量
                transform.position = pos + rightPos.position;
            }

            Line();
        }
    }

    /// <summary>
    ///【Author:xzy;Time:2021-12-29】
    /// Function: 处理松开小鸟飞出的逻辑
    /// </summary>
    void Fly()
    {
        myTrail.StartTrail();//开始拖尾【12 - 添加小鸟飞出的拖尾效果:添加】
        sp.enabled = false;//松开小鸟,取消掉弹簧组件,小鸟就会飞出
        Invoke("Next", 5);//定时器:一段时候后调用Next方法
    }

    /// <summary>
    ///【Author:xzy;Time:2021-12-29】【课程08弹弓画线操作:添加】
    /// Function: 画线
    /// </summary>
    void Line()
    {       
        right.enabled = true; //开启画线组件【11解决重复划线和小鸟轮换速度突然变大的问题:添加】
        left.enabled = true;

        right.SetPosition(0, rightPos.position);//画线:右边的起始位置:右边弹弓位置
        right.SetPosition(1, this.transform.position);//画线:右边的终点位置:小鸟位置

        left.SetPosition(0, leftPos.position);
        left.SetPosition(1, this.transform.position);
    }

    /// <summary>
    ///【Author:xzy;Time:2021-12-29】【10游戏逻辑的判定,实现多只小鸟的飞出:添加】
    /// Function: 下一只小鸟被弹
    /// </summary>
    private void Next()
    {
        GameManager._instance.birds.Remove(this);//移除列表中此时小鸟元素
        Destroy(this.gameObject);//摧毁这个小鸟
        Instantiate(boom, this.transform.position, Quaternion.identity);//产生特效
        GameManager._instance.NextBird();//下一只小鸟出现
    }

    /// <summary>
    ///【Author:xzy;Time:2021-12-29】【12 - 添加小鸟飞出的拖尾效果:添加】
    /// Function: 碰撞检测
    /// </summary>
    private void OnCollisionEnter2D(Collision2D collision)
    {
        myTrail.ClearTrail();//清除拖尾【12 - 添加小鸟飞出的拖尾效果:添加】
    }
}

1. Solucionar error: Listo

1. Usa pájaros y cerdos como casas prefabricadas

Pájaro renombrado a pájaro rojo

1. Haz un botón de pausa

Cambiar nombre + agregar componente de botón

 

1. Hacer una interfaz de interfaz de usuario de pausa

Luego cambie el nombre, cree una nueva Imagen como gb, hágala translúcida

1. Producción: pausa la animación de la interfaz de usuario que aparece

  1. Nota: ¿Qué objeto se puede seleccionar directamente para su procesamiento durante la producción de animación?

 

1. Producción: animación de vuelta al juego.

 

 1. Agregue el componente del botón al ícono del botón

 

Supongo que te gusta

Origin blog.csdn.net/qq_40544338/article/details/122266692
Recomendado
Clasificación