标签:右上角 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; } } }
2.空物体的主要任务是把预制体实例化出来,还需要控制预制体以斜对角线并且在一个位移值内旋转上下移动。
using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> /// 特效孵化器 /// </summary> 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); } }
运行无误就可以了,总图而言比较简单,代码注解比较详细了就不多赘述了。
还是没有效果图。。
Unity_Live2d 特效孵化器实现花瓣等装饰飘落UI类效果②
标签:右上角 tsp iat 运动 调用 计时 index 任务 类型
原文地址:https://www.cnblogs.com/LinawZ/p/13628350.html