Example #1
0
    public override void DamageRecieve(Transform other, IDDamage damageType, Vector3 sourcePos, Vector3 velocity)
    {
        if (IsDead)
        {
            return;
        }

        base.DamageRecieve(other, damageType, sourcePos, velocity);

        //Debug.LogFormat("{0} firing", name);
        actionStack.Push(() => Attack(other));
    }
    //private void OnDrawGizmos() {
    //	Gizmos.DrawLine(initialPos, targetPos);
    //	Gizmos.color = Color.red;
    //	Gizmos.DrawLine(initialPos, initialPos + archDir);
    //}

    #endregion ^ Unity Methods


    #region Public Methods

    public void Initialize(Transform target, IDDamage damageType, float speed)
    {
        initialPos = myTransform.position;
        DamageType = damageType;
        Speed      = speed;

        targetPos    = target.position;
        targetPos.y  = HEIGHT;
        archDir      = Vector3.Cross(targetPos - initialPos, Vector3.up).normalized;
        distToTarget = (targetPos - initialPos).magnitude;

        timeToDestination = distToTarget / speed;

        IsArching = true;

        GameManager.Instance.HitStop.SmallHit();
    }
    public void Deflect(Vector3 direction, IDDamage damageType)
    {
        AudioManager.Instance.PlayAudio(audioSource, Audio.Mortal.DEFLECT_SOUND);

        DamageType = damageType;

        initialPos   = myTransform.position;
        initialPos.y = HEIGHT;
        targetPos    = initialPos + direction;
        targetPos.y  = HEIGHT;

        time              = 0;
        Speed            *= 1.25f;
        timeToDestination = direction.magnitude / Speed;
        IsArching         = false;

        GameManager.Instance.HitStop.BigHit();
    }
Example #4
0
    public override void DamageRecieve(Transform other, IDDamage damageType, Vector3 sourcePos, Vector3 velocity)
    {
        if (IsDead)
        {
            return;
        }

        Vector3 myPos = transform.position;

        sourcePos.y = myPos.y;
        Vector3 impactDir = (myPos - sourcePos).normalized;
        float   impact    = Mathf.Clamp(velocity.magnitude, 0, maxImpact);

        RBody?.AddForce(((Vector3.up * 0.5f) + impactDir).normalized * (impactScale + impact), ForceMode.Impulse);

        AddHealth(-1);
        AudioManager.Instance.PlayAudio(audioSource, Audio.Enemy.HIT);

        CheckHealth();
    }
    public override void DamageRecieve(Transform other, IDDamage damageType, Vector3 sourcePos, Vector3 velocity)
    {
        if (IsDead)
        {
            return;
        }

        if (damageType != MyDamageID())
        {
            Vector3 myPos = myTransform.position;
            sourcePos.y = myPos.y;
            Vector3 impactDir = (myPos - sourcePos).normalized;
            float   impact    = Mathf.Clamp(velocity.magnitude, 0, 2);

            RBody?.AddForce(impactDir * (2 + impact), ForceMode.Impulse);

            AddHealth(-1);
            AudioManager.Instance.PlayAudio(audioSource, Audio.Player.HIT);
        }
    }
 public abstract void DamageRecieve(Transform other, IDDamage damageType, Vector3 sourcePos, Vector3 velocity);
 public override void DamageRecieve(Transform other, IDDamage damageType, Vector3 sourcePos, Vector3 velocity)
 {
 }