예제 #1
0
    public virtual void OnRealHitTarget(CreatureHitCollider target, AttackInfo a)
    {
        ++m_targetCount;

        if (m_targetCount == 1)
        {
            creature.DispatchEvent(CreatureEvents.FIRST_HIT, Event_.Pop(target.creature));
        }

        if (!a || a.targetLimit < 1 || m_targetCount < a.targetLimit)
        {
            return;
        }

        _Clear();
        if (m_currentSnapshot > -1)
        {
            m_snapShots[m_currentSnapshot].Set(m_attackBox, m_hitEff, m_forward);
        }
    }
예제 #2
0
    public void OnHit(CreatureHitCollider hit)
    {
        FightRecordManager.RecordLog <LogEmpty>(log =>
        {
            log.tag = (byte)TagType.FlyEffectOnHit;
        });

        if (destroyed || !hit && m_groundHited)
        {
            return;
        }

        if (!hit)
        {
            m_groundHited = true;
        }

        if (!effectInfo.hitEffect.isEmpty)
        {
            Create(effectInfo.hitEffect, source, startForward ? 1 : -1, inverted, hitEffect, position_, eular_, m_root.eulerAngles);
        }

        if (effectInfo.removeOnHit == 1 || effectInfo.removeOnHit == 2 && !hit)
        {
            FightRecordManager.RecordLog <LogEffectDestoryOnHit>(l =>
            {
                l.tag         = (byte)TagType.FlyEffectOnHit;
                l.name        = name;
                l.removeOnHit = effectInfo.removeOnHit;
            });

            Destroy();
        }

#if AI_LOG
        Module_AI.LogBattleMsg(source, "flying effect[logId: {0}] OnHit,hit creature is {1} with effect pos = {2}, collider pos = {3} ", logId, hit == null ? "null" : hit.creature ? hit.creature.uiName : "null", position_, m_collider == null ? "null" : m_collider.position.ToString());
#endif
    }
예제 #3
0
    public override void OnRealHitTarget(CreatureHitCollider target, AttackInfo a)
    {
        base.OnRealHitTarget(target, a);

        effect.OnHit(target);
    }