Esempio n. 1
0
    static void CreateChildObject(Character cha, ChildObject childObject, SkillContext context, excel_skill_event e)
    {
        Vector3 offset = new Vector3(
            (float)e.evnetParam5 * 0.001f,
            (float)e.evnetParam6 * 0.001f,
            (float)e.evnetParam7 * 0.001f
            );

        Transform t = null;

        if (cha != null)
        {
            t = cha.transform;
        }
        else if (childObject != null)
        {
            t = childObject.transform;
        }
        if (t == null)
        {
            return;
        }

        if (e.evnetParam2 == 0)
        {
            ChildObject co = ChildObject.CreateChildObject(e.evnetParam1, context, t);
            if (co == null)
            {
                Debug.LogError("子物体发射失败,技能事件ID: " + e.id + "; 子物体ID: " + e.evnetParam1);
                return;
            }
            co.Position += co.transform.rotation * offset;
            // context.mChildObjects.Add(co);
        }
        else
        {
            int num = e.evnetParam3;
            if (num <= 1)
            {
                Debug.LogError("发射数量小于等于1,请修改事件为发射单个子物体,技能事件ID: " + e.id);
            }
            float angle = (float)e.evnetParam4;
            float div   = (num <= 1 ? 0.0f : 1.0f / (float)(num - 1));
            float half  = (num <= 1 ? 0.0f : angle * 0.5f);

            float targetPosDist = (context.TargetPos - context.mOwner.Position).magnitude;

            Vector3 origTargetPos = context.TargetPos;

            for (int i = 0; i < num; ++i)
            {
                float      yaw = angle * (float)i * div - half;
                Quaternion q   = Quaternion.AngleAxis(yaw, Vector3.up);

                Vector3 dir = q * context.mOwner.Direction;
                context.TargetPos = context.mOwner.Position + dir.normalized * targetPosDist;

                ChildObject co = ChildObject.CreateChildObject(e.evnetParam1, context, t);
                if (co == null)
                {
                    Debug.LogError("子物体发射失败,技能事件ID: " + e.id + "; 子物体ID: " + e.evnetParam1);
                    return;
                }
                co.transform.localRotation *= q;
                co.Position += co.transform.rotation * offset;
                // context.mChildObjects.Add(co);
            }
        }
    }
Esempio n. 2
0
    static void Hit(Character cha, ChildObject childObject, SkillContext context, excel_skill_event e)
    {
        int hitID = e.evnetParam1;

        SkillHit.Hit(context.mOwner, hitID, context);
    }
 public ChildObject Save(ChildObject childobject)
 {
     childobject = _genericRepository.Save(childobject);
     return(childobject);
 }