public AnimeAction CreateHitDamageAction(BattleModel targetModel, AnimationClip hitEffect = null)
    {
        SequenceAction sequence = new SequenceAction();

        sequence.name = "HitSequence";

        if (hitEffect != null)
        {
            SimpleAnimationAction effectAction = new SimpleAnimationAction();
            effectAction.clip          = slashEffect;
            effectAction.spawnPosition = targetModel.transform.position + new Vector3(0, 1, -2);
            sequence.AddAction(effectAction);
        }

        ModelHitAction hitAction = new ModelHitAction();

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


        HitValueAction damageAction = new HitValueAction();

        damageAction.valueTextPrefab = hitValuePrefab;
        damageAction.hitValue        = 1000;
        damageAction.position        = targetModel.transform.position + new Vector3(0, 2, -2);
        sequence.AddAction(damageAction);

        return(sequence);
    }
 AnimeAction GetOnHitAction()
 {
     if (dieWhenHit)
     {
         return(ModelDieAction.Create(GetTarget()));
     }
     else
     {
         return(ModelHitAction.Create(GetTarget()));
     }
 }
Esempio n. 3
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. 4
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. 5
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);
    }