Unity_Live2d 特效孵化器实现花瓣等装饰飘落UI类效果②

2021-03-28 15:25

阅读:721

标签:右上角   tsp   iat   运动   调用   计时   index   任务   类型   

实现效果:运行时右上角随固定范围的轨迹飘落花瓣和心形。

1.canvas内新建图片,素材图拉进去以后设置好合适的大小,做成预制体。创建空物体,将空物体中心点移动到画布右上角的点对齐,脚本控制物体的随机出现与定时销毁。

技术图片技术图片
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class EffectMove : MonoBehaviour
{
    public float moveSpeed; //运动速度
    private float timeVal;  //计时器
    private int randomYPos; //随机出现位置

    // Start is called before the first frame update
    void Start()
    {
        //延时调用销毁物体
        Destroy(gameObject, 10);
    }

    // Update is called once per frame
    void Update()
    {
        //物体沿自身相对右方运动,而非沿世界坐标方向运动。如果是世界坐标应该是vector3 pos.x
        transform.Translate(-transform.right * moveSpeed * Time.deltaTime);
        if (timeVal >= 1)       //一秒以后计时归零 空物体再次随机产生物体
        {
            timeVal = 0;
            randomYPos = Random.Range(-1, 2);
        }
        else    //产生的物体的移动位置
        {
            transform.Translate(transform.up * randomYPos * moveSpeed * Time.deltaTime/5);
            timeVal += Time.deltaTime;
        }
    }
}
View Code

 

 

2.空物体的主要任务是把预制体实例化出来,还需要控制预制体以斜对角线并且在一个位移值内旋转上下移动。

技术图片技术图片
using System.Collections;
using System.Collections.Generic;
using UnityEngine;


/// 
/// 特效孵化器
/// 
public class EffectSpawn : MonoBehaviour
{
    public GameObject[] effectGos;  //定义gameobject对象存储特效物体
    public Transform canvasTrans;    //获取当前画布对象

    // Start is called before the first frame update
    void Start()
    {
        //循环调用  方法名,开始时间,间隔时间
        InvokeRepeating("CreateEffectGo", 0, 2);
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    private void CreateEffectGo()
    {
        int randomIndex = Random.Range(0, 2);    //int类型的random.range是左闭右开 float类型的是左闭右闭
        transform.rotation = Quaternion.Euler(new Vector3(0, 0, Random.Range(0, 45)));  //欧拉角实现自身旋转
        GameObject effectGo = Instantiate(effectGos[randomIndex], transform.position, transform.rotation);
        effectGo.transform.SetParent(canvasTrans);
    }

}
View Code

 

运行无误就可以了,总图而言比较简单,代码注解比较详细了就不多赘述了。

 

还是没有效果图。。

Unity_Live2d 特效孵化器实现花瓣等装饰飘落UI类效果②

标签:右上角   tsp   iat   运动   调用   计时   index   任务   类型   

原文地址:https://www.cnblogs.com/LinawZ/p/13628350.html


评论


亲,登录后才可以留言!