Exemplo n.º 1
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;
        }
Exemplo n.º 2
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();
        }