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); }
void moveProcess(SkillMove n) { if (n.id > 0) {//击退到攻击范围的最远点 //unit.move.play(bt.moveId,mUnit.pos-area.R*unit.dir,null,true); } else {//击退指定距离 //unit.move.play(Mathf.Abs(bt.moveId),-unit.dir,null,true); } }
public static SkillNode createNode(Type nodeType) { SkillNode n = null; switch (nodeType) { case SkillNode.Type.Action: n = new SkillAction(); break; case SkillNode.Type.Anim: n = new SkillAnim(); break; case SkillNode.Type.Harm: n = new SkillHarm(); break; case SkillNode.Type.Bullet: n = new SkillBullet(); break; case SkillNode.Type.Buff: n = new SkillBuff(); break; case SkillNode.Type.Event: n = new SkillEvent(); break; case SkillNode.Type.Move: n = new SkillMove(); break; case SkillNode.Type.Lua: n = new SkillLua(); break; default: Debug.LogError("unsurpport skillnode type:" + nodeType); return(null); } return(n); }
public void ReleaseSkill(int skillid, Vector3 mousePosition) { switch (skillid) { case 1: { if (mousePosition != Vector3.zero) { mousePosition.y = position.y; LookAt(mousePosition - position); } var obj = AssetManager.GetSingleton().Load <GameObject>("Effect/Bullet"); if (obj) { var go = Instantiate(obj); go.transform.position = transform.position; go.transform.rotation = transform.rotation; SkillMove sm = go.AddComponent <SkillMove>(); sm.to = transform.position + transform.forward * 10; sm.duration = .5f; sm.mPlayerCharacter = this; } } break; case 2: { if (mousePosition != Vector3.zero) { mousePosition.y = position.y; LookAt(mousePosition - position); } var obj = AssetManager.GetSingleton().Load <GameObject>("Effect/Bullet"); if (obj) { Quaternion r = transform.rotation; for (int i = 0; i < 9; i++) //循环求出各个点 { Quaternion q = Quaternion.Euler(r.eulerAngles.x, r.eulerAngles.y - (10 * i) + 45, r.eulerAngles.z); ///求出第i个点的旋转角度 Vector3 v = transform.position + (q * Vector3.forward) * 10; ///该点的坐标 var go = Instantiate(obj); go.transform.position = transform.position; go.transform.rotation = q; SkillMove sm = go.AddComponent <SkillMove>(); sm.to = v; sm.duration = .5f; sm.mPlayerCharacter = this; } } } break; case 3: { var obj = AssetManager.GetSingleton().Load <GameObject>("Effect/Bullet"); if (obj) { Quaternion r = transform.rotation; for (int i = 0; i < 36; i++) //循环求出各个点 { Quaternion q = Quaternion.Euler(r.eulerAngles.x, r.eulerAngles.y - (10 * i), r.eulerAngles.z); ///求出第i个点的旋转角度 Vector3 v = transform.position + (q * Vector3.forward) * 10; ///该点的坐标 var go = Instantiate(obj); go.transform.position = transform.position; go.transform.rotation = q; SkillMove sm = go.AddComponent <SkillMove>(); sm.to = v; sm.duration = .5f; sm.mPlayerCharacter = this; } } } break; } }