Esempio n. 1
0
    IEnumerator Go(Vector3 D, float V, Vector3 N)
    {
        float   targetDistance = Vector3.Distance(transform.position, D);
        float   lerp           = 0f;
        Vector3 startPosition  = transform.position;

        float stopDistance = targetDistance / 100f;

        while (lerp <= stopDistance)
        {
            lerp += V;
            transform.position = Vector3.Lerp(startPosition, startPosition + (MoveVector * 100f), lerp);

            yield return(null);
        }

        if (HitTarget != null)
        {
            if (HitTarget.health - DamageAmount <= 0)
            {
                Creator.GetComponent <UnitStats>().Kills++;
            }

            HitTarget.Damage(DamageAmount);
        }

        MakeDecal(D, N);

        Destroy(this.gameObject);
    }
Esempio n. 2
0
    public void shoot(GameObject target)
    {
        if (target.GetComponent <AIUnit>().isAlive)
        {
            if (Time.time > nextFire)
            {
                nextFire = Time.time + fireRate;

                StartCoroutine(bulletEffect());

                Vector3 rayOrigin = pointOfFire.position;
                Vector3 rayDir    = target.transform.position - transform.position;

                RaycastHit hit;

                bulletLine.SetPosition(0, pointOfFire.position);

                if (Physics.Raycast(rayOrigin, rayDir, out hit, shootRange))
                {
                    bulletLine.SetPosition(1, hit.point);

                    AIUnit enemyHit = hit.collider.GetComponent <AIUnit>();

                    if (enemyHit != null)
                    {
                        enemyHit.Damage(shootDamage);
                    }
                }
                else
                {
                    bulletLine.SetPosition(1, pointOfFire.position + (rayDir * shootRange));
                }
            }
        }
    }