/// <summary> /// 粒子发射 /// </summary> /// <param name="prefabEffect">要发射的粒子预制物</param> /// <param name="startPos">起始位置</param> /// <param name="Target">发射目标</param> /// <param name="moveSpeed">0.1至10</param> public void FxSend(GameObject prefabEffect, Vector3 startPos, GameObject Target, float moveSpeed = 1f) { //Init Camera cam = Camera.main; if (cam.GetComponent<RFX1_DistortionAndBloom>() == null) { cam.gameObject.AddComponent<RFX1_DistortionAndBloom>(); } if (cam.allowHDR == false) cam.allowHDR = true; var currentInstance = Instantiate(prefabEffect) as GameObject; currentInstance.transform.position = startPos; //设置碰撞层 var rayCastCollision = currentInstance.GetComponentInChildren<RFX1_EffectSettingProjectile>(true); if (rayCastCollision != null) { //射线只和层碰撞,实际上没什么作用 rayCastCollision.CollidesWith = 1 << LayerMask.NameToLayer("Monster"); } var animator = currentInstance.GetComponent<RFX1_AnimatorEvents>(); if (animator != null) { animator.Speed = moveSpeed; //设置速度 animator.Target = Target; } var targetScript2 = currentInstance.GetComponent<RFX1_Target>(); if (targetScript2 != null) { targetScript2.Target = Target; } var transformMotion = currentInstance.GetComponentInChildren<RFX1_TransformMotion>(true); if (transformMotion != null) { transformMotion.Speed= moveSpeed; transformMotion.Target = Target; transformMotion.CollisionEnter += (sender, info) => { //碰到 碰撞器 事件 Debug.Log("prefabEffect CollisionEnter =" + info.Hit.transform.name); //will print collided object name to the console. GameObject.Destroy(currentInstance); }; } }
Unity3d KriptoFX插件使用
猜你喜欢
转载自blog.csdn.net/u013628121/article/details/80165325
今日推荐
周排行