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); }
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)); } } } }