Ejemplo n.º 1
0
        public override void Play(ISkillAttacker attacker, SkillEffect se)
        {
            AttachFxNodeProp prop = m_NodeProp as AttachFxNodeProp;

            if (prop == null)
            {
                return;
            }
            int level = 0;

            if (attacker != null)
            {
                if (attacker.GetSkillPart() != null)
                {
                    level = attacker.GetSkillPart().FxLevel;
                }
            }
            skillMaster = attacker.GetGameObject();
            AddLinkEffect node = new AddLinkEffect();

            node.nFollowType = (int)0;
            node.rotate      = Vector3.zero;
            node.vOffset     = prop.offset_pos;
            node.nLevel      = level;
            //  string effectName = prop.fx_name.Replace( "prefab" , "fx" );
            // node.strEffectName = SkillEffectHelper.FxDir + effectName;
            node.strEffectName = prop.fx_name;
            node.strLinkName   = prop.attach_name;
            if (skillMaster != null)
            {
                effectID = (uint)(int)skillMaster.SendMessage(EntityMessage.EntityCommand_AddLinkEffect, node);
            }
        }
Ejemplo n.º 2
0
        public void InitFollowFx()
        {
            if (m_attacker == null)
            {
                DestroyFx();
                return;
            }
            bStart      = true;
            bDestory    = false;
            m_targetObj = m_attacker.GetTargetGameObject();
            ISkillPart skillPart = m_attacker.GetSkillPart();

            if (skillPart != null)
            {
                m_SkillTarget = skillPart.GetSkillTarget();

                table.SkillDatabase db = GameTableManager.Instance.GetTableItem <table.SkillDatabase>((uint)m_skillId, 1);
                if (db != null)
                {
                    if (db.flyspeed != 0)
                    {
                        m_speed = db.flyspeed * 1.0f / 100;
                    }
                }
            }

            // m_targetNode = m_attacker.GetTargetHitNode();
            m_startTime = Time.time;
            castPos     = m_attacker.GetTargetHitNodePos(m_SkillTarget, targetHitNode);
            float dis = GetVectorDistance(transform.position, castPos);

            totalTime = dis / m_speed;
        }
Ejemplo n.º 3
0
 bool IsHideFx()
 {
     if (m_Atttacker != null)
     {
         ISkillPart sp = m_Atttacker.GetSkillPart();
         if (sp != null)
         {
             return(sp.IsHideOtherFx());
         }
     }
     return(false);
 }
Ejemplo n.º 4
0
        public override void Play(ISkillAttacker attacker, SkillEffect se)
        {
            m_ef = se;
            Transform attacker_node = attacker.GetRoot();

            if (attacker_node == null)
            {
                return;
            }


            PlaceFxNodeProp prop = m_NodeProp as PlaceFxNodeProp;

            if (prop == null)
            {
                return;
            }
            // Engine.Utility.Log.Error("play PlaceFxNodeProp {0}", prop.fx_name);
            string stateName  = prop.nodeState;
            int    stateIndex = 0;

            if (!string.IsNullOrEmpty(stateName))
            {
                Client.SkillState state = SkillSystem.GetSkillStateByString(stateName);
                stateIndex = (int)state - 1;
            }
            if (stateIndex < 0)
            {
                stateIndex = 0;
            }
            Vector3 pos = attacker_node.TransformPoint(prop.position);
            //Vector3 vscale = attacker_node.localScale * prop.scale;
            Vector3 vscale = Vector3.one * prop.scale;
            Vector3 angles = attacker_node.eulerAngles;

            angles += prop.rotation;

            if (prop.by_target)
            {
                pos = se.GetPlayEffectInitPos() + prop.position;
            }
            int level = 0;

            if (attacker != null)
            {
                if (attacker.GetSkillPart() != null)
                {
                    level = attacker.GetSkillPart().FxLevel;
                }
            }
            m_uEffectID = helper.ReqPlayFx(prop.fx_name, pos, angles, vscale, level);
            m_startTime = Time.time;
            uint skillID = se.CurSkillID;

            m_curDb = GameTableManager.Instance.GetTableItem <table.SkillDatabase>(skillID, 1);
            if (m_curDb != null)
            {
                if (stateIndex >= 0)
                {
                    if (!string.IsNullOrEmpty(m_curDb.skillEffectTime))
                    {
                        string[] timeArray = SkillSystem.GetTimeArrayByString(m_curDb.skillEffectTime);
                        if (stateIndex < timeArray.Length)
                        {
                            uint time = 1000;
                            if (uint.TryParse(timeArray[stateIndex], out time))
                            {
                                m_uEffectLen = time;
                            }
                        }
                    }
                }
            }
            //  m_bRmove = false;

            IEffect ef = GetEffectByID(m_uEffectID);

            if (ef != null)
            {
                Transform trans = ef.GetNodeTransForm();
                if (trans == null)
                {
                    return;
                }
                m_placeHandle = trans.gameObject.GetComponent <PlaceFxHandle>();
                if (m_placeHandle == null)
                {
                    m_placeHandle = trans.gameObject.AddComponent <PlaceFxHandle>();
                }
            }
            m_placeHandle.m_attacker  = attacker;
            m_placeHandle.m_len       = m_uEffectLen;
            m_placeHandle.m_effectid  = m_uEffectID;
            m_placeHandle.m_placeNode = this;
            m_placeHandle.InitPlaceFx();
        }
Ejemplo n.º 5
0
        public override void Play(ISkillAttacker attacker, SkillEffect se)
        {
            m_ef = se;
            GameObject fxObj = new GameObject();//helper.CreateFxObj(fx_name);

            if (fxObj == null)
            {
                //Log.Error("no fx: {0}", fx_name);
                return;
            }

            Transform attacker_root = attacker.GetRoot();

            //callback.OnTriggerHit();

            //ArrowFxHandle handler = Util.AddComponent(fxObj, "ArrowFxHandle") as ArrowFxHandle;
            m_Handler = fxObj.AddComponent <ArrowFxHandle>();

            ArrowFxNodeProp prop = m_NodeProp as ArrowFxNodeProp;

            if (prop == null)
            {
                return;
            }

            m_Handler.m_attacker = attacker;
            m_Handler.m_speed    = prop.speed;
            m_Handler.m_acce     = prop.acce;
            m_Handler.m_range    = prop.range;
            m_Handler.m_radius   = prop.radius;
            m_Handler.m_hitIndex = hit_index;
            m_Handler.m_hitNode  = this;
            m_Handler.m_hitNum   = prop.fx_num;

            //handler.transform.localPosition = attacker_obj.transform.position;

            Vector3 scale;

            scale.x = m_Handler.transform.localScale.x * attacker_root.localScale.x;
            scale.y = m_Handler.transform.localScale.y * attacker_root.localScale.y;
            scale.z = m_Handler.transform.localScale.z * attacker_root.localScale.z;

            m_Handler.transform.localScale = scale;

            //handler.transform.localPosition += handler.transform.forward * z_offset;
            //handler.transform.localRotation = caster.transform.rotation;


            //handler.transform.Rotate(Vector3.forward, pitch, Space.Self);

            if (prop.fx_num == 1)
            {
                m_Handler.transform.parent = SkillEffectManager.Helper.PlaceFxRoot;
                Vector3 angles = attacker_root.eulerAngles;
                angles.z = prop.pitch;
                m_Handler.transform.localEulerAngles = angles;
                m_Handler.transform.Translate(0, prop.height, prop.z_offset);

                return;
            }

            float start_angle = -prop.angle / 2;
            float per_angle   = prop.angle / (prop.fx_num - 1);

            for (int i = 0; i < prop.fx_num; i++)
            {
                GameObject fxObjInst;

                if (i == 0)
                {
                    fxObjInst = fxObj;
                }
                else
                {
                    fxObjInst = new GameObject();//GameObject.Instantiate(fxObj) as GameObject;
                }

                m_Handler            = fxObjInst.GetComponent <ArrowFxHandle>();
                m_Handler.m_attacker = attacker;
                m_Handler.m_speed    = prop.speed;
                m_Handler.m_acce     = prop.acce;
                m_Handler.m_range    = prop.range;
                m_Handler.m_radius   = prop.radius;
                m_Handler.m_hitIndex = hit_index;
                m_Handler.m_hitNode  = this;
                m_Handler.m_hitNum   = prop.fx_num;

                fxObjInst.transform.parent = SkillEffectManager.Helper.PlaceFxRoot;

                Vector3 euler = attacker_root.eulerAngles;
                euler.y += start_angle;
                euler.z  = prop.pitch;

                fxObjInst.transform.localEulerAngles = euler;
                fxObjInst.transform.localScale       = scale;
                fxObjInst.transform.localPosition    = attacker_root.position;
                fxObjInst.transform.Translate(0, prop.height, prop.z_offset);

                start_angle += per_angle;
                int level = 0;
                if (attacker != null)
                {
                    if (attacker.GetSkillPart() != null)
                    {
                        level = attacker.GetSkillPart().FxLevel;
                    }
                }
                m_Handler.m_effectid = helper.ReqPlayFx(prop.fx_name, fxObjInst.transform, Vector3.zero, Vector3.one, level);
            }
        }
Ejemplo n.º 6
0
        public override void Play(ISkillAttacker attacker, SkillEffect se)
        {
            m_ef = se;
            GameObject go = attacker.GetTargetGameObject();

            if (go == null)
            {
                return;
            }

            FollowFxNodeProp prop = m_NodeProp as FollowFxNodeProp;

            if (prop == null)
            {
                return;
            }

            skill_id    = se.CurSkillID;
            m_uDamageID = attacker.GetDamageID();
            Transform attacker_node = attacker.GetRoot();

            if (attacker_node == null)
            {
                return;
            }
            //GameObject fxObj = SkillEffectHelper.Instance.GetFollowGameObject();
            //if (fxObj == null)
            //{
            //    Engine.Utility.Log.Error("============================fxobj is null");
            //    return;
            //}

            //fxObj.transform.parent = SkillEffectManager.Helper.PlaceFxRoot;
            //EffectUtil.ResetLocalTransform(fxObj.transform);

            //fxObj.transform.localEulerAngles = attacker_node.eulerAngles;
            //fxObj.transform.position = attacker_node.position;
            //fxObj.transform.Translate(prop.offset_pos);



            int level = 0;

            if (attacker != null)
            {
                if (attacker.GetSkillPart() != null)
                {
                    level = attacker.GetSkillPart().FxLevel;
                }
            }

            uint    effectid = helper.ReqPlayFx(prop.fx_name, helper.PlaceFxRoot, Vector3.zero, Vector3.one, level);
            IEffect ef       = GetEffectByID(effectid);

            if (ef != null)
            {
                if (ef.GetNodeTransForm() == null)
                {
                    return;
                }
                GameObject fxObj = ef.GetNodeTransForm().gameObject;
                if (fxObj == null)
                {
                    return;
                }
                fxObj.transform.localEulerAngles = attacker_node.eulerAngles;
                fxObj.transform.position         = attacker_node.position;
                fxObj.transform.Translate(prop.offset_pos);
                m_Handler = fxObj.GetComponent <FollowFxHandle>();
                if (m_Handler == null)
                {
                    m_Handler = fxObj.AddComponent <FollowFxHandle>();
                }
                m_Handler.m_attacker    = attacker;
                m_Handler.m_speed       = prop.speed;
                m_Handler.targetHitNode = prop.target_hitnode;
                m_Handler.m_acce        = prop.acce;
                m_Handler.m_len         = prop.len;
                m_Handler.m_hitIndex    = hit_index;
                m_Handler.m_hitNode     = this;
                m_Handler.m_effectid    = effectid;
                m_Handler.InitFollowFx();
            }
            //  fxObj.name = m_Handler.m_effectid.ToString();
        }