示例#1
0
    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);
    }
示例#2
0
 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);
     }
 }
示例#3
0
    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);
    }
示例#4
0
    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;
        }
    }