예제 #1
0
 public void Attack(CharStats target)
 {
     if (atkCoolDown <= 0)
     {
         target.TakeDamage(statsSelf);
         atkCoolDown = 100f / statsSelf.atkSpeed.GetValue();
     }
 }
예제 #2
0
    IEnumerator DoDamage(CharStats stats, float delay)
    {
        yield return(new WaitForSeconds(delay));

        stats.TakeDamage(myStats.damage.GetValue());

        //SFXPlaying.instance.PlaySound (SFXPlaying.instance.Attack);
        AudioManager.instance.PlaySound("EnemySound", transform.position);
    }
예제 #3
0
    IEnumerator DoDamage(CharStats stats, float delay)
    {
        yield return(new WaitForSeconds(delay));

        stats.TakeDamage(myStats.damage.GetValue());
        if (stats.currentHealth <= 0)
        {
            InCombat = false;
        }
    }
예제 #4
0
    // Update is called once per frame
    void Update()
    {
        agent.SetDestination(target.position);

        float distance = Vector3.Distance(target.position, transform.position);

        if (distance <= attackRadius && !deliveredAttack)
        {
            deliveredAttack = true;
            CharStats stats = target.GetComponent <CharStats>();
            anim.Play("Warrior_Attack");
            stats.TakeDamage(100);
        }
    }
예제 #5
0
 private void attack()
 {
     if (isActiveAndEnabled)
     {
         if (!isCasting)
         {
             isCasting = true;
             flash();
             Vector3 AttackToPlayer = player.transform.position - transform.position;
             float   distance       = AttackToPlayer.magnitude;
             if (distance < attackRadius)
             {
                 charStats.TakeDamage(10);
             }
         }
         else
         {
             isCasting = false;
         }
     }
 }
예제 #6
0
    void shootLaser()
    {
        RaycastHit2D hitPlayer    = Physics2D.Raycast(transform.position, transform.right, defDistanceRay, 0x1 << LayerMask.NameToLayer("Player"));
        RaycastHit2D hitObstacles = Physics2D.Raycast(transform.position, transform.right, defDistanceRay, 0x1 << LayerMask.NameToLayer("obstacles"));

        if (hitPlayer.collider != null)
        {
            draw2DRay(firePoint.position, hitPlayer.point);

            //Makes player take damage
            charStats.TakeDamage(1);
        }
        else if (hitObstacles.collider != null)
        {
            draw2DRay(firePoint.position, hitObstacles.point);
        }
        else
        {
            draw2DRay(firePoint.position, firePoint.transform.right * defDistanceRay);
        }
    }
    void Shoot()
    {
        GameObject player = GameObject.Find("Player");
        //Vector2 v = new Vector2(player.transform.position.x - transform.position.x, player.transform.position.y - transform.position.y);
        //float distance = v.magnitude;
        int          mask = (1 << LayerMask.NameToLayer("Player")) | (1 << LayerMask.NameToLayer("obstacles"));
        RaycastHit2D hit  = Physics2D.Raycast(transform.position, transform.right, Mathf.Infinity, mask);

        //Debug.Log(hit.collider.gameObject.name);
        if (hit.collider.gameObject.tag == "Player") //&& distance < maxDistance
        {
            CharStats charstats = hit.collider.gameObject.GetComponent <CharStats>();
            charstats.TakeDamage(damage);
            lineRenderer.SetPosition(0, firePoint.position);
            lineRenderer.SetPosition(1, hit.point);
            lineRenderer.enabled = true;
        }
        else
        {
            lineRenderer.enabled = false;
        }
    }
예제 #8
0
    IEnumerator DoDamage(CharStats stats, float delay)
    {
        yield return(new WaitForSeconds(delay));

        stats.TakeDamage(myStats.damage.GetValue());
    }