コード例 #1
0
    public void MultiTarget()
    {
        ParallelAction parallel = new ParallelAction();

        parallel.name = "SkillCast";

        string vfx = "Thunder";

        AnimeAction action1 = CreateCastAction("target1", vfx, enemyAnimator, 1000);

        parallel.AddAction(action1);

        AnimeAction action2 = CreateCastAction("target2", vfx, enemyAnimator2, 777);

        parallel.AddAction(action2);


        AnimatorAction animeAction = new AnimatorAction();

        animeAction.name         = "character";
        animeAction.animator     = charAnimator;
        animeAction.triggerState = "Cast";
        animeAction.onHitAction  = parallel;

        actionManager.RunAction(animeAction);
    }
コード例 #2
0
    public void VFXUsingPrefab()
    {
        AnimeAction action = BattleVFXAction.CreateWithPrefab(vfxPrefab, "Fire", enemy2);

        //action
        action.Start();
    }
コード例 #3
0
    public void Init(GameCharacter _actorCharacter, AnimeAction _subAttackAction)
    {
        // mIsDone = false;
        // Debug.Log("BattleVFXAction: Init called");
        // mVFXObject = _vfxObj;
        // mVFXName = vfxName;

        actorCharacter  = _actorCharacter;
        subAttackAction = _subAttackAction;


        actorCharacter.SetAnimeEventCallback((string eventName) => {
            //Debug.Log("BattleVFXAction: animeEvent. name=" + eventName);
            if (eventName == "attack")
            {
                //HitTarget();
                StartSubAttackAction();
            }
        });

        actorCharacter.SetAnimeEndCallback(() => {
            //if(onAttackAction == null || onA
            MarkAsDone();
        });
    }
コード例 #4
0
    protected override void OnUpdate()
    {
        if (mActiveAction != null)
        {
            mActiveAction.Update(mDeltaTime);

            if (mActiveAction.IsDone() == false)
            {
                return;                         // wait for next update
            }
            else
            {
                mActiveAction = null;
            }
        }

        // -- activeAction is null or activeAction is done

        // if no more pending
        if (HasPendingAction() == false)
        {
            MarkAsDone();
        }
        else
        {
            PopPendingAction();
        }
    }
コード例 #5
0
    public void TargetAttack()
    {
        AnimeAction targetHit   = CreateHitDamageAction(hero);
        AnimeAction actorAttack = CreateAttackAction(enemy, hero, 0, true, targetHit);

        actionManager.RunAction(actorAttack);
    }
コード例 #6
0
    public void OneOnOne()
    {
        Debug.Log("###### TEST 1 ######");
        SequenceAction demoFight = new SequenceAction();

        Model actor, target;


        // Right-0 attack Left-0
        actor = rightTeam[0];  target = leftTeam[0];
        AnimeAction p1Attack = CreateAttackAction(actor, target, 0,
                                                  true, CreateHitDamageAction(target));


        // Left-0 attack Right-1
        actor = leftTeam[0];  target = rightTeam[0];
        AnimeAction p2Attack = CreateAttackAction(actor, target, 0,
                                                  true, CreateHitDamageAction(target, effectPrefab[1]));



        demoFight.AddAction(p2Attack);
        demoFight.AddAction(p1Attack);

        actionManager.RunAction(demoFight);
    }
コード例 #7
0
    public static CharAttackAction Create(GameCharacter _actor, AnimeAction _subAttackAction)
    {
        CharAttackAction action = new CharAttackAction();

        action.Init(_actor, _subAttackAction);

        return(action);
    }
コード例 #8
0
    public void Schedule(float delay, AnimeAction action)
    {
        ScheduleItem scheduleItem = new ScheduleItem();

        scheduleItem.delay  = delay;
        scheduleItem.action = action;

        mScheduleList.Add(scheduleItem);
    }
コード例 #9
0
    public void PlayerAttack()
    {
        // SubAction
        AnimeAction subAction = BattleVFXAction.CreateWithPrefab(vfxPrefab, "Fire", enemy2);

        AnimeAction attackAction = CharAttackAction.Create(player, subAction);

        attackAction.Start();
    }
コード例 #10
0
    public void AttackToPosition()
    {
        UpdateLog("Attack to a position");

        AnimeAction onHitAction = GetOnHitAction();

        ModelAttackAction action = ModelAttackAction.CreateAttackToPos(
            GetActor(), attackStyle, isMoving, targetPosition, onHitAction);

        AnimeActionManager.Instance.StartAction(action);
    }
コード例 #11
0
    public void TestProject()
    {
        Model actor, target;

        actor  = rightTeam[0];
        target = leftTeam[0];

        AnimeAction action = CreateProjectileAction(actor, target, projectilePrefab[0], effectPrefab[0]);

        actionManager.RunAction(action);
    }
コード例 #12
0
    public void StartAction(AnimeAction action)
    {
        if (action == null)
        {
            return;
        }

        action.SetManager(this);
        action.Start();
        mActionList.Add(action);
    }
コード例 #13
0
    public void KillAModel()
    {
        UpdateLog("Kill to a model");

        AnimeAction onHitAction = ModelDieAction.Create(GetTarget());

        ModelAttackAction action = ModelAttackAction.CreateAttackToModel(
            GetActor(), attackStyle, isMoving, GetTarget(), onHitAction);

        AnimeActionManager.Instance.StartAction(action);
    }
コード例 #14
0
 public void StartAction(AnimeAction action)
 {
     if (mManager != null)
     {
         Debug.Log("ERROR: AnimeAction: queue action=" + action.name);
         mManager.QueueNewAction(action);
     }
     else
     {
         Debug.Log("ERROR: AnimeActionManager: manager is null");
     }
 }
コード例 #15
0
    // [Test]
    // public void Die()
    // {
    //  Debug.Log("###### TEST 2 ######");
    // }



    #region Action

    public AttackAction CreateAttackAction(BattleModel actor, BattleModel target,
                                           short style, bool isMoving, AnimeAction onHitAction)
    {
        AttackAction attackAction = new AttackAction();

        attackAction.actor         = actor;
        attackAction.style         = style;
        attackAction.isMoving      = isMoving;
        attackAction.targetPostion = target.GetHitPosition() + new Vector3(0, 0, -5);
        attackAction.onHitAction   = onHitAction;

        return(attackAction);
    }
コード例 #16
0
    public void QueueNewAction(AnimeAction action)
    {
        if (action == null)
        {
            return;
        }
        Debug.Log("INFO: ActionManager: " + action.name + " is queued");

        // action.SetManager(this);
        // action.Start();

        mNewActionQueue.Add(action);    // update loop will run it
    }
コード例 #17
0
    public void Range2()
    {
        // Projectile Action
        SequenceAction sequence         = new SequenceAction();
        AnimeAction    projectileAction = CreateProjectileAction(hero.GetLaunchPosition(), target.transform.position);

        sequence.AddAction(projectileAction);
        sequence.AddAction(CreateTargetHitDamageAction());

        //
        AttackAction attackAction = CreateActorAttackAction(1, false, sequence);

        actionManager.RunAction(attackAction);
    }
コード例 #18
0
    public void MeleeEffect()
    {
        SequenceAction sequence = new SequenceAction();

        bool isMoving = true;

        foreach (GameObject effect in effectPrefab)
        {
            AnimeAction action = CreateEffectAttack(rightTeam[1], leftTeam[0], isMoving, effect);
            sequence.AddAction(action);
        }

        AnimeActionManager.Instance.RunAction(sequence);
    }
コード例 #19
0
    public ModelAttackAction CreateAttackAction(Model actor, Model target,
                                                short style, bool isMoving, AnimeAction onHitAction)
    {
        ModelAttackAction attackAction = new ModelAttackAction();

        attackAction.actor       = actor;
        attackAction.style       = style;
        attackAction.isMoving    = isMoving;
        attackAction.postionType = ModelAttackAction.PositionType.UseModel;
        attackAction.targetModel = target;
        attackAction.onHitAction = onHitAction;

        return(attackAction);
    }
コード例 #20
0
    protected void PopPendingAction()
    {
        if (mPendingList.Count == 0)
        {
            return;                     // Prevent out-of-bound problem!
        }
        mActiveAction = mPendingList[0];
        mPendingList.RemoveAt(0);

        if (mActiveAction != null)
        {
            mActiveAction.Start();
        }
    }
コード例 #21
0
    public void SingleTarget()
    {
        AnimeAction targetAction = CreateCastAction("fire", "Fire", enemyAnimator, 1000);

        AnimatorAction animeAction = new AnimatorAction();

        animeAction.name         = "character";
        animeAction.animator     = charAnimator;
        animeAction.triggerState = "Cast";
        animeAction.onHitAction  = targetAction;

        //AnimeAction action =

        actionManager.RunAction(animeAction);
    }
コード例 #22
0
    public void AttackFromTeam(SequenceAction sequence, BattleModel[] attackTeam, BattleModel[] targetTeam)
    {
        for (int i = 0; i < attackTeam.Length; i++)
        {
            BattleModel actor  = attackTeam[i];
            BattleModel target = targetTeam[i];

            short style = (short)Random.Range(0, 2);

            AnimeAction attackAttack = CreateAttackAction(actor, target, style,
                                                          true, CreateHitDamageAction(target, slashEffect[0]));
            sequence.AddAction(attackAttack);
            //for(BattleModel actor in attackTeam) {
        }
    }
コード例 #23
0
    public void FightDemo1()
    {
        SequenceAction demoFight = new SequenceAction();


        AnimeAction p1Attack = CreateAttackAction(enemy, hero, 0,
                                                  true, CreateHitDamageAction(hero));

        demoFight.AddAction(p1Attack);

        AnimeAction p2Attack = CreateAttackAction(hero, enemy, 0,
                                                  true, CreateHitDamageAction(enemy, slashEffect));

        demoFight.AddAction(p2Attack);

        actionManager.RunAction(demoFight);
    }
コード例 #24
0
    public void AttackFromTeam(SequenceAction sequence, Model[] attackTeam, Model[] targetTeam)
    {
        for (int i = 0; i < attackTeam.Length; i++)
        {
            Model actor  = attackTeam[i];
            Model target = targetTeam[i];

            short style = (short)Random.Range(0, 2);

            effectIndex++;
            int effectIdx = effectIndex % 2;

            AnimeAction attackAttack = CreateAttackAction(actor, target, style,
                                                          true, CreateHitDamageAction(target, effectPrefab[effectIdx]));
            sequence.AddAction(attackAttack);
            //for(Model actor in attackTeam) {
        }
    }
コード例 #25
0
 // Note:
 //		https://answers.unity.com/questions/1039227/play-an-animation-of-animator-once-only.html
 public void ChangeAnimeAction(AnimeAction action)
 {
     if (action == AnimeAction.Idle)
     {
         mAnimator.SetTrigger("Idle");
     }
     else if (action == AnimeAction.Attack)
     {
         mAnimator.SetTrigger("Attack");
     }
     else if (action == AnimeAction.CastMagic)
     {
         mAnimator.SetTrigger("Cast");
     }
     else if (action == AnimeAction.Hit)
     {
         mAnimator.SetTrigger("Hit");
     }
     //mAnimator.
 }
コード例 #26
0
ファイル: YukataAction.cs プロジェクト: n0mimono/Book0
    private void InitilizeActions()
    {
        InLockAction += (act) => {
            SetWalkable (false);
            inAction = act;
        };
        OutLockAction += (act) => {
            SetWalkable (true);
            inAction = AnimeAction.None;
        };

        stateMachines = animator.GetBehaviours<UnityChanLocoSD> ().ToList();

        SetWalkable (true);
    }
コード例 #27
0
 public void RunAction(AnimeAction action)
 {
     Reset();
     StartAction(action);
 }
コード例 #28
0
ファイル: YukataAction.cs プロジェクト: n0mimono/Book0
    private void StartLockedAction(AnimeAction act, LockHandler onCompleted, bool isForceStop = false)
    {
        if (isForceStop) {
            ForceStop ();
        }

        // anime
        InLockAction(act);
        stateMachines.ForEach (m => m.OnExit = (hash) => {
            OutLockAction(act);
            onCompleted(act);
        });
        animator.SetAnimeAction ((int)act);
    }
コード例 #29
0
ファイル: YukataAction.cs プロジェクト: n0mimono/Book0
 public bool Is(AnimeAction act)
 {
     return InAction == act;
 }
コード例 #30
0
    public void DamageText()
    {
        AnimeAction action = CreateHitValueAction(leftPlayer);

        actionManager.StartAction(action);
    }
コード例 #31
0
    public void Hit()
    {
        AnimeAction action = CreateHitAction(leftPlayer);

        actionManager.StartAction(action);
    }
コード例 #32
0
    public void SlashVFX()
    {
        AnimeAction action = CreateEffectAction(leftPlayer, slashEffect[0]);

        actionManager.StartAction(action);
    }
コード例 #33
0
 protected void AddSubAction(AnimeAction action)
 {
     action.SetManager(mManager);
     action.Start();
     mSubActionList.Add(action);
 }