static void SkillMove(Character cha, ChildObject childObj, SkillContext context, excel_skill_event e) { if (cha == null) { return; } SkillMoveDataType type = (SkillMoveDataType)e.evnetParam1; if (type == SkillMoveDataType.MoveType1) { float time = (float)e.evnetParam2 * 0.001f; SkillMove skillMove = IAction.CreateAction <SkillMove>(); skillMove.Init1(cha, context.TargetPos, time); cha.AddAction(skillMove); } else if (type == SkillMoveDataType.MoveType2) { float time = (float)e.evnetParam2 * 0.001f; float speed = (float)e.evnetParam3 * 0.001f; Vector3 dir = context.TargetPos - cha.Position; SkillMove skillMove = IAction.CreateAction <SkillMove>(); skillMove.Init2(cha, dir, speed, time); cha.AddAction(skillMove); } context.SetSkillContextFlag(SkillContextFlag.SyncPosOnSkillEnd, true); }
static void SkillMoveEvent(excel_skill_event e) { int[] values = Enum.GetValues(typeof(SkillMoveDataType)) as int[]; string[] texts = new string[values.Length]; for (int i = 0; i < values.Length; ++i) { SkillMoveDataType t = (SkillMoveDataType)values[i]; texts[i] = t.ToDescription(); } e.evnetParam1 = EditorGUILayout.IntPopup("移动类型", e.evnetParam1, texts, values); SkillMoveDataType moveType = (SkillMoveDataType)e.evnetParam1; if (moveType == SkillMoveDataType.MoveType1) { float time = (float)e.evnetParam2 * 0.001f; time = EditorGUILayout.FloatField("移动时间", time); e.evnetParam2 = (int)(time * 1000.0f); } else if (moveType == SkillMoveDataType.MoveType2) { float time = (float)e.evnetParam2 * 0.001f; time = EditorGUILayout.FloatField("移动时间(s)", time); e.evnetParam2 = (int)(time * 1000.0f); float speed = (float)e.evnetParam3 * 0.001f; speed = EditorGUILayout.FloatField("移动速度(m/s)", speed); e.evnetParam3 = (int)(speed * 1000.0f); } }