Esempio n. 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);
    }
Esempio n. 2
0
    public AnimeAction CreateHitDamageAction(Model targetModel,
                                             GameObject hitEffect = null)
    {
        ParallelAction hitDamagePack = new ParallelAction();

        hitDamagePack.name = "HitDamage";


        ModelHitAction hitAction = new ModelHitAction();

        hitAction.name  = "enemyHit";
        hitAction.actor = targetModel;
        hitDamagePack.AddAction(hitAction);

        GameTextAction damageAction = new GameTextAction();

        damageAction.textPrefab   = damageTextPrefab;
        damageAction.text         = 1000.ToString();
        damageAction.spawnPostion = targetModel.transform.position + new Vector3(0, 2, -2);

        hitDamagePack.AddAction(damageAction);

        if (hitEffect == null)
        {
            return(hitDamagePack);
        }
        //

        EffectAction effectAction = EffectAction.CreatePointEffect(hitEffect,
                                                                   targetModel.GetPosition());

        effectAction.onHitAction = hitDamagePack;
        return(effectAction);


        // SimpleAnimationAction effectAction = new SimpleAnimationAction();
        //  effectAction.clip = hitEffect;
        //  effectAction.spawnPosition = targetModel.transform.position  + new Vector3(0, 1, -2);
        //  hitDamagePack.AddAction(effectAction);
        // }



        // return hitDamagePack;
    }
Esempio n. 3
0
    public AnimeAction CreateProjectileAction(Model actor,
                                              Model target,
                                              GameObject projectile,
                                              GameObject hitEffect)
    {
        // Sequence: Projectile Movement, Hit Effect, ModelHit HitValue

        SequenceAction sequence = new SequenceAction();

        Vector3 launchPos       = actor.GetLaunchPosition();
        Vector3 targetCenterPos = (Vector3)target.GetCenterPosition() + new Vector3(0, 0, -5);
        Vector3 targetPos       = (Vector3)target.GetOriginPosition() + new Vector3(0, 0, -5);
        float   duration        = 0.5f;

        // Projectile Move
        EffectAction projectileAction = EffectAction.CreateProjectileEffect(
            projectile, launchPos, targetCenterPos, duration);

        sequence.AddAction(projectileAction);

        // Hit Effect
        ParallelAction damagePack = new ParallelAction();

        sequence.AddAction(damagePack);

        EffectAction effectAction = EffectAction.CreatePointEffect(hitEffect, targetPos);

        damagePack.AddAction(effectAction);

        ModelHitAction hitAction = new ModelHitAction();

        hitAction.name  = "enemyHit";
        hitAction.actor = target;
        damagePack.AddAction(hitAction);


        int            damage       = Random.Range(500, 10000);
        GameTextAction damageAction = GameTextAction.Create(
            damageTextPrefab, damage.ToString(), target.transform.position + new Vector3(0, 2, -2));

        damagePack.AddAction(damageAction);

        return(sequence);
    }
Esempio n. 4
0
    public void ParallelDamage()
    {
        ParallelAction parallel = new ParallelAction();

        GameTextAction action = new GameTextAction();

        action.text       = "123456";
        action.textPrefab = hitPrefab;
        action.textStyle  = GameText.Style.Damage;
        parallel.AddAction(action);

        action              = new GameTextAction();
        action.text         = "123456";
        action.textPrefab   = hitPrefab;
        action.spawnPostion = new Vector3(2, 2, -3);
        action.textStyle    = GameText.Style.Damage;
        parallel.AddAction(action);

        actionManager.RunAction(parallel);
    }
Esempio n. 5
0
    public void ParallelTest()
    {
        ParallelAction parallel = new ParallelAction();

        parallel.name = "parallel";



        //AnimatorAction action;

        HitValueAction hitAction;

        hitAction = new HitValueAction();
        hitAction.valueTextPrefab = hitValuePrefab;
        hitAction.hitValue        = 999;
        hitAction.position        = new Vector3(0, 2, -2);
        parallel.AddAction(hitAction);

        hitAction = new HitValueAction();
        hitAction.valueTextPrefab = hitValuePrefab;
        hitAction.hitValue        = 888;
        hitAction.position        = new Vector3(1, 1, -2);
        parallel.AddAction(hitAction);

        hitAction = new HitValueAction();
        hitAction.valueTextPrefab = hitValuePrefab;
        hitAction.hitValue        = 777;
        hitAction.position        = new Vector3(2, 0, -2);
        parallel.AddAction(hitAction);


        DelayAction delay = new DelayAction();

        delay.SetDuration(2.0f);
        parallel.AddAction(delay);

        //
        actionManager.RunAction(parallel);
        //action.animator = bat
    }
Esempio n. 6
0
    public AnimeAction CreateHitDamageAction(Model targetModel,
                                             GameObject hitEffect = null)
    {
        ParallelAction hitDamagePack = new ParallelAction();

        hitDamagePack.name = "HitDamage";


        ModelHitAction hitAction = new ModelHitAction();

        hitAction.name  = "enemyHit";
        hitAction.actor = targetModel;
        hitDamagePack.AddAction(hitAction);

        GameTextAction damageAction = new GameTextAction();

        damageAction.textPrefab   = damageTextPrefab;
        damageAction.text         = 1000.ToString();
        damageAction.spawnPostion = targetModel.transform.position + new Vector3(0, 2, -2);

        hitDamagePack.AddAction(damageAction);

        if (hitEffect == null)
        {
            return(hitDamagePack);
        }
        //


        //
        Effect       effect  = hitEffect.GetComponent <Effect>();
        PositionType posType = effect == null ? PositionType.Ground : effect.positionType;

        EffectAction effectAction = EffectAction.CreatePointEffect(hitEffect,
                                                                   targetModel.GetPositionByType(posType));

        effectAction.onHitAction = hitDamagePack;
        return(effectAction);
    }
    public void EffectCloud()
    {
        ParallelAction parallel = new ParallelAction();

        int effectCount = 30;

        for (int i = 0; i < effectCount; i++)
        {
            float x = Random.Range(-4f, 4f);
            float y = Random.Range(-2f, 2f);

            Vector3      spawnPos     = new Vector3(x, y, -5);
            EffectAction effectAction = EffectAction.CreatePointEffect(effectPrefab, spawnPos, null, 3);
            parallel.AddAction(effectAction);
        }

        actionManager.RunAction(parallel);
    }