Example #1
0
    protected override Vector3 HitPosition(Hitpoint hitpoint)
    {
        Vector3 target = hitpoint.transform.position;

        distance = (hitpoint.transform.position - transform.position).magnitude;
        return(DistanceToEnd(distance));
    }
Example #2
0
    public void DealDamage(float damage)
    {
        List <GameObject> opponents = new List <GameObject>(center.GetOpponents(transform.parent.gameObject.tag.ToString()));

        foreach (GameObject opponent in opponents)
        {
            Hitpoint hitpoint = opponent.GetComponent <Hitpoint>().effectiveHitpoint;
            float    distance = (hitpoint.transform.position - transform.position).magnitude;
            if (distance <= radius)
            {
                hitpoint.TakeDamage(damage * effectiveness * Decay(distance), transform.position, true);
                if (!hitpoint.shield)
                {
                    ApplyForce(opponent.GetComponent <Rigidbody>(), Decay(distance));
                }
            }
        }
        foreach (Rigidbody floatRb in center.floats)
        {
            float distance = (floatRb.transform.position - transform.position).magnitude;
            if (distance <= radius)
            {
                ApplyForce(floatRb, Decay(distance));
            }
        }
    }
Example #3
0
 protected override void OnHit(Hitpoint hitpoint)
 {
     if (!hitting.Contains(hitpoint))
     {
         hitting.Add(hitpoint);
     }
 }
Example #4
0
 void Awake()
 {
     // Init vars
     duration      = maxDuration;
     hitpoint      = GetComponent <Hitpoint> ();
     activeScale   = shield.transform.localScale;
     deactiveScale = new Vector3(0, 0, 1);
 }
    // Start is called before the first frame update
    void Start()
    {
        SR       = GetComponent <SpriteRenderer>();
        animator = GetComponent <Animator>();
        rb2d     = GetComponent <Rigidbody2D>();
        Hitpoint Damage = GetComponent <Hitpoint>();

        gameObject.SetActive(false);
    }
Example #6
0
 public void Damage(int amount)
 {
     for (int i = 0; i < amount; i++)
     {
         Hitpoint hitpoint = hitpointList[hitpointList.Count - 1];
         hitpointList.Remove(hitpoint);
         hitpoint.Hide();
     }
 }
Example #7
0
 public void Heal(int amount)
 {
     for (int i = 0; i < amount; i++)
     {
         Vector2  position = new Vector2(transform.position.x + hitpointList.Count, transform.position.y);
         Hitpoint hitpoint = Instantiate <Hitpoint>(hitpointPrefab);
         hitpoint.transform.position = position;
         hitpointList.Add(hitpoint);
     }
 }
Example #8
0
    void CheckIfHitCraft(Collider2D other)
    {
        Hitpoint hitpoint = other.GetComponent <Hitpoint>();

        if (!hitpoint || used)
        {
            return;
        }
        hitpoint.TakeDamage(damage);
        OnHit();
    }
Example #9
0
 protected override void OnHit(Hitpoint hitpoint)
 {
     hitpoint.TakeDamage(damage * weaken, transform.position);
     if (quota > 0f && quota >= hitpoint.penetrationCost)
     {
         quota      -= hitpoint.penetrationCost;
         rb.velocity = rb.velocity * Mathf.Clamp(weaken, 0.75f, 1f);
     }
     else
     {
         AreaDamage();
     }
 }
Example #10
0
    void OnTriggerEnter(Collider other)
    {
        Hitpoint hitpoint = other.GetComponent <Hitpoint>();

        if (!hitpoint)
        {
            return;
        }
        if (!isBeam && hitpoint.shielded)
        {
            return;
        }
        Hit(hitpoint);
    }
Example #11
0
    void OnTriggerEnter(Collider other)
    {
        Bullet bullet = other.GetComponent <Bullet>();

        if (bullet)
        {
            bullet.HittedByPulse(transform.position); return;
        }
        Hitpoint hitpoint = other.GetComponent <Hitpoint>();

        if (hitpoint)
        {
            hitpoint.HittedByPulse(transform.position);
        }
    }
Example #12
0
    void OnTriggerStay(Collider other)
    {
        if (time < nextEffect)
        {
            return;
        }
        nextEffect = time + 1f / frequency;
        Hitted(true, other.transform.position);
        Hitpoint hitpoint = other.GetComponent <Hitpoint>();

        if (hitpoint && hitpoint.above)
        {
            Vector3 delta = other.transform.position - transform.position;
            hitpoint.above.GetComponent <Rigidbody>().AddForce(
                delta.normalized * repulse / delta.magnitude, ForceMode.Impulse);
            SpawnOnHitEffect(transform.position + (delta.normalized * capsule.radius));
        }
    }
Example #13
0
    void GrantShield(Collider other)
    {
        if (shieldValue == 0f)
        {
            return;
        }
        Hitpoint hitpoint = other.transform.GetComponentInChildren <Hitpoint>();

        if (!hitpoint.shield)
        {
            hitpoint = hitpoint.under;
        }
        if (!hitpoint)
        {
            return;
        }
        hitpoint.GainHp(hitpoint.maxHp * shieldValue);
        hitpoint.maxHp = hitpoint.maxHp + maxShieldValue;
        hitpoint.shield.Hitted(true, transform.position);
    }
Example #14
0
    void OnTriggerEnter2D(Collider2D other)
    {
        // Skip white listed collider
        if (whiteList.Contains(other))
        {
            return;
        }

        // Skip if not tag only
        if (damageTagOnly.Length > 0 && other.tag != damageTagOnly && other.transform.root.tag != damageTagOnly)
        {
            return;
        }

        // Get HP controller
        Hitpoint otherHitpoint = other.GetComponentInParent <Hitpoint> ();

        // If target has hitpoint
        if (otherHitpoint)
        {
            // Deal damage to target
            otherHitpoint.damage(damage);

            // If self has hitpoint too (like an object like rock)
            if (hitpoint)
            {
                // Kill by hitpoint
                hitpoint.damage(hitpoint.hitpoints);
            }

            // No self hitpoint (like a bullet)
            else
            {
                // Destroy self
                Destroy(gameObject);
            }
        }
    }
Example #15
0
 // Start is called before the first frame update
 void Start()
 {
     hp     = player.GetComponent <Hitpoint>();
     keephp = 0;
 }
Example #16
0
    /**
     * Spawn a random object on a random child point
     */
    void spawn()
    {
        // Respawn again
        if (spawnTimer > 0)
        {
            Invoke("spawn", spawnTimer);
        }

        // No spawning if disabled
        if (spawnDisabled)
        {
            return;
        }

        // If disables other spawners
        if (disableSpawnersDuration > 0)
        {
            // Toggle them all
            foreach (Spawner spawner in disableSpawners)
            {
                spawner.spawnDisabled = true;
            }

            // Revert
            Invoke("enableSpawners", disableSpawnersDuration);
        }

        // Get random object and point
        Transform  spawnPoint  = spawnPoints [Random.Range(0, spawnPoints.Count)];
        GameObject spawnObject = spawnObjects [Random.Range(0, spawnObjects.Length)];

        // Spawn object on spawn point
        GameObject instance         = Instantiate(spawnObject, spawnPoint.position, spawnPoint.rotation) as GameObject;
        Hitpoint   instanceHitpoint = instance.GetComponentInChildren <Hitpoint> ();
        Spawner    instanceSpawner  = instance.GetComponentInChildren <Spawner> ();

        // Set speed of instance, its child and its spawner
        if (spawnSpeed > 0)
        {
            // Set instance child speed
            foreach (Move instanceMove in instance.GetComponentsInChildren <Move>(true))
            {
                instanceMove.directionSpeed.y = -spawnSpeed;
            }

            // Set instance spawner speed
            if (instanceSpawner)
            {
                instanceSpawner.spawnSpeed = spawnSpeed;
            }
        }

        // Set hitpoints
        if (spawnHitpoints > 0)
        {
            // Find all hitpoints
            foreach (Hitpoint hitpoint in instance.GetComponentsInChildren <Hitpoint>())
            {
                // Set hitpoints to current spawn hitpoints
                hitpoint.setMaxHitpoints(hitpoint.maxHitpoints + spawnHitpoints);
            }
        }

        // Set hitpoints
        if (spawnHitpoints > 0)
        {
            // Find all hitpoints
            foreach (Hitpoint hitpoint in instance.GetComponentsInChildren <Hitpoint>())
            {
                // Set hitpoints to current spawn hitpoints
                hitpoint.setMaxHitpoints(hitpoint.maxHitpoints + spawnHitpoints);
            }
        }

        // Set death star
        if (spawnDeathStars > 0 && instanceHitpoint != null && instanceHitpoint.deathStars > 0)
        {
            instanceHitpoint.deathStars += spawnDeathStars;
        }

        // Set random color
        if (spawnRandomColor)
        {
            instance.GetComponentInChildren <SpriteRenderer> ().color = spawnColors [Random.Range(0, spawnColors.Length)];
        }

        // Set random rotation
        if (spawnRandomRotation)
        {
            instance.transform.GetChild(0).GetComponent <Transform> ().eulerAngles = new Vector3(0, 0, Random.Range(0, 360));
        }

        // Set random bonus (and color)
        if (spawnRandomBonus)
        {
            Bonus[] bonuses = GameObject.FindGameObjectWithTag("Storage").GetComponentsInChildren <Bonus> ();
            instanceHitpoint.deathBonus = bonuses [Random.Range(0, bonuses.Length)];
            instance.GetComponentInChildren <SpriteRenderer> ().color = instanceHitpoint.deathBonus.color;
        }
    }
Example #17
0
 void Start()
 {
     // Get inits
     hitpoint = GetComponent <Hitpoint> ();
 }
Example #18
0
 protected abstract void OnHit(Hitpoint hitpoint);
Example #19
0
 void Hit(Hitpoint hitpoint)
 {
     ApplyMomentum(hitpoint.GetComponent <Rigidbody>());
     SpawnOnHitEffect(HitPosition(hitpoint), (hitpoint.shield != null) && !isBeam);
     OnHit(hitpoint);
 }
Example #20
0
 protected abstract Vector3 HitPosition(Hitpoint hitpoint);
Example #21
0
 protected override void OnHit(Hitpoint hitpoint)
 {
 }
Example #22
0
 protected override Vector3 HitPosition(Hitpoint hitpoint)
 {
     return(hitpoint.transform.position);
 }
Example #23
0
 public void InitBar(Hitpoint _hitpoint)
 {
     hitpoint     = _hitpoint;
     rt.sizeDelta = new Vector2(Mathf.Clamp(hitpoint.hp * growthScale, minLength, maxLength), 1.75f);
     gameObject.SetActive(false);
 }