예제 #1
0
    private void OnCharacterEnter(IBSpriteTrigger trigger, Collider collider, Vector3 contact)
    {
        CharacterController character = collider.GetComponentInParent <CharacterController>();

        _characters.Add(_timers.GetObject().Set(character, Time.time));
        Damage(character);
    }
예제 #2
0
 private void Start()
 {
     _trigger = GetComponent <IBSpriteTrigger>();
     _trigger.onDetectCharacterEnter = OnCharacterEnter;
     _trigger.onDetectCharacterExit  = OnCharacterExit;
     _trigger.Enable();
 }
예제 #3
0
    protected virtual void OnDetectCharacterEnter(IBSpriteTrigger trigger, Collider detectedCollider, Vector3 contactPosition)
    {
        CharacterController character = detectedCollider.GetComponentInParent <CharacterController>();
        float distance;
        float hitDirection = GetHitDirection(contactPosition, characterMotor.transform, out distance);

        if (attackEffectSettings.doesHit)
        {
            character.GetHit(attackEffectSettings.hitVelocityX * hitDirection, attackEffectSettings.hitVelocityY);
        }
        if (attackEffectSettings.doesStun)
        {
            character.GetStunned(hitDirection * attackEffectSettings.stunAngle, attackEffectSettings.stunTime);
        }
        if (attackEffectSettings.doesDamage)
        {
            character.GetDamaged(attackEffectSettings.damage);
        }
        if (hitEffect)
        {
            BurstParticleController   particle = hitEffect.Get <BurstParticleController>();
            ParticleSystem.MainModule main     = particle.ParticleSystem.main;
            main.startColor             = hitEffectColor;
            particle.transform.position = contactPosition;
            particle.Burst();
        }

        DamageSoundEffect(contactPosition);

        if (characterController.CompareTag(TagManager.LOCAL_PLAYER_TAG))
        {
            DisplayPlayerDamageEffect(distance, hitDirection, contactPosition);
        }
        DisplayDamageEffect(distance, hitDirection, contactPosition);
    }
    protected override void Awake()
    {
        base.Awake();

        _ibSpriteTrigger = GetComponent <IBSpriteTrigger>();
        _ibSpriteTrigger.onDetectCharacterEnter = OnDetectCharacterEnter;
        _ibSpriteTrigger.onDetectCharacterExit  = OnDetectCharacterExit;
    }
예제 #5
0
    protected virtual void Awake()
    {
        _trailRenderer = GetComponent <TrailRenderer>();
        trailSettings.InitRenderer(ref _trailRenderer);
        _trailRenderer.emitting = false;

        _ibSpriteTrigger = GetComponent <IBSpriteTrigger>();
        _ibSpriteTrigger.Disable();
    }
예제 #6
0
 private void OnCharacterExit(IBSpriteTrigger trigger, Collider collider) => Remove(collider.GetComponentInParent <CharacterController>());
예제 #7
0
 protected virtual void OnDetectCharacterExit(IBSpriteTrigger trigger, Collider detectedCollider)
 {
 }