コード例 #1
0
    IEnumerator Attack()
    {
        float   randomDamage  = Random.Range(damage, damage * damageMultiplier);
        Vector3 originalAngle = sword.localEulerAngles;
        float   time          = 0f;

        while (time <= attackTime)
        {
            time += Time.fixedDeltaTime;
            sword.localEulerAngles += new Vector3(0, 0, time * 1.5f);
            if (time >= attackTime * 0.9f)
            {
                sword.localEulerAngles -= new Vector3(0, 0, swingSpeed);
            }
            yield return(null);
        }
        sword.localEulerAngles = originalAngle;
        if (Vector3.Distance(transform.position, playerPos.position) <= attackDistance && Time.timeScale != 0)
        {
            playerPos.GetComponent <PlayerHealth> ().TakeDamage(randomDamage);
            damageText.CreateText(randomDamage, damage, playerPos, false);
            StartCoroutine(Attack());
        }
        else
        {
            isAttacking = false;
        }
    }
コード例 #2
0
 public void Attack(float damage, string typeOfAttack)
 {
     for (int i = 0; i < checkenemy.enemyIndexes.Count; i++)
     {
         float randomDamage;
         bool  crit = false;
         if (typeOfAttack == "slash")
         {
             randomDamage = Random.Range(damage, damage * slashDamageMultiplier);
             if (randomDamage >= critChance * (slashDamageMultiplier / 10) + (damage * (slashDamageMultiplier / 2)))
             {
                 crit          = true;
                 randomDamage *= Random.Range(1.2f, critMultiplier);
             }
         }
         else
         {
             randomDamage = Random.Range(damage, damage * dashDamageMultiplier);
             if (randomDamage >= critChance * (dashDamageMultiplier / 10) + (damage * (dashDamageMultiplier / 2)))
             {
                 crit          = true;
                 randomDamage *= Random.Range(1.2f, critMultiplier);
             }
         }
         checkenemy.enemies [checkenemy.enemyIndexes[i]].GetComponent <EnemyHealth> ().TakeDamage(randomDamage);
         damageText.CreateText(randomDamage, damage, checkenemy.enemies [checkenemy.enemyIndexes [i]].transform, crit);
     }
 }
コード例 #3
0
 void TakeDamage(float damage)
 {
     damageText.CreateText(damage, transform);
     if (damage >= health)
     {
         health = 0;
         Destroy(Instantiate(explosion, transform.position, Quaternion.identity), 1f);
         gameOver.GameOverScreen();
         Destroy(this.gameObject);
     }
     else
     {
         health -= damage;
     }
 }
コード例 #4
0
ファイル: EnemyHealth.cs プロジェクト: KajG/A-Space-Conflict
 void TakeDamage(float damage)
 {
     damageText.CreateText(damage, transform);
     if (damage >= health)
     {
         mission.AddKill();
         Destroy(Instantiate(explosion, transform.position, Quaternion.identity), 1f);
         Destroy(this.gameObject);
     }
     else
     {
         health -= damage;
     }
     healthSlider.UpdateSlider();
 }