前言
屏幕点击特效目前用到两种,场景中特效和UI特效,其实就是坐标和层级之间的区别。无论特效用的帧动画、粒子特效亦或是贴图都可以使用,根据项目稍微调整下就好了。如果想优化的话可以写个对象池,这里就不赘述了。
1.UI点击特效
注意要将Layer设置为UI。
代码:
Vector2 point;
public Transform parent;
public GameObject effect;
public Canvas UICanvas; //你所使用的UICanvas
[Range(0, 5.0f)]
public float desTime = 1.0f;
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
//将鼠标点击的屏幕坐标转换为UI坐标,最后一个输出参数为转换的点
RectTransformUtility.ScreenPointToLocalPointInRectangle(UICanvas.transform as RectTransform,
Input.mousePosition, UICanvas.worldCamera, out point);
GameObject go = Instantiate(effect, parent);
go.GetComponent<RectTransform>().anchoredPosition = point;
Destroy(go, desTime);
}
}
2.场景中特效
目前做的是2D项目,特效用的是Sprite做的帧动画,要注意SortingLayer。
public Transform parent;
public GameObject effect;
[Range(0, 5.0f)]
public float desTime = 1.0f;
//传入坐标调用
public void InstantiateEffect(Vector3 pos)
{
GameObject go = Instantiate(effect, parent);
go.transform.position = pos;
Destroy(go, desTime);
}