예제 #1
0
 public void DealDamage(DamageData data)
 {
     if (data.damageType == EDamageType.EPhysical)
     {
         myFadeout.DecreaseLight(data.damage * damageUnlitScale);
     }
 }
예제 #2
0
    private void OnCollisionEnter2D(Collision2D collision)
    {
        // only do fire in free form
        //if (!bFreeForm)
        //return;

        if (!playerController.canPerformAction)
        {
            return;
        }

        if (!collision.gameObject || collision.contactCount == 0 || !tExplosion.IsReadyRestart())
        {
            return;
        }

        // ensure only specified masks will cause explosion
        if ((requiredExplosionMask.value & (1 << collision.gameObject.layer)) == 0)
        {
            return;
        }

        //
        if (lightFadeout.fadeoutPercent < minExplosionFadeout)
        {
            return;
        }

        lightFadeout.DecreaseLight(fadeoutCost);

        Vector3 spawnPosition = collision.GetContact(0).point;
        Vector2 toOther       = transform.position - player.position;

        Instantiate(explosionPrefab, spawnPosition, Quaternion.FromToRotation(Vector2.up, toOther));
    }