【實作】滑鼠/鼠標/觸控點擊特效系統

2016年1月11日 星期一

【實作】滑鼠/鼠標/觸控點擊特效系統


【適用情境】當專案需要滑鼠/觸控點擊的時候產生一個粒子效果


有2種呈現方法
1.常駐型粒子效果,適用於滑鼠
2.點擊/觸控產生粒子效果並隔數秒後銷毀


【法1】
1.創建一個粒子系統(particle system),或導入現成的粒子prefab
2.將以下Script導入粒子系統物件上

[C#]
public float Distance = 10;
void Update(){
Ray effect_ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Vector3 pos = effect_ray.GetPoint(Distance);
transform.position = pos;

【法2】

這邊參考了Caz的用法,雖然上面說會自動銷毀,但實際測試好像不會就加入了Destroy
[Unityscript]
#pragma strict
var MyEffect:GameObject ;
var hit : RaycastHit;
var cooldown : float;
private var effect:GameObject;
private var g_camera : Camera;
private var g_camTransform : Transform;

function Awake()
{
   g_camera = Camera.main;
   g_camTransform = g_camera.transform;
}

function Update ()
{
 if(cooldown>0){cooldown-=Time.deltaTime;}
 var mousePos = Input.mousePosition;

 var ray = Camera.main.ScreenPointToRay (Input.mousePosition);
 var vecMousePosition = g_camera.ScreenToWorldPoint(Vector3(mousePos.x, mousePos.y-15,20));

 if(Input.GetMouseButton(0) &&cooldown<=0)
 {
  effect=Instantiate(MyEffect, vecMousePosition , Quaternion.identity);
  cooldown=0.15;
  Destroy(effect,0.4);
 } 
}

2016.01.14補充:
此方法其實還需要調整一些東西,不然生成的prefab會在UI後方
但一般來說點擊的效果都是在最前面的
解決方案是在Canvas上調整Render Moder改成Camera模式
然後Main camera丟進去後,產生的prefab就可以調整到UI前面了


0 意見 :

張貼留言

Popular Posts