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); } } }
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); }