// Update is called once per frame void Update() { if (actualIntervallTime > 0f) { actualIntervallTime = actualIntervallTime - Time.deltaTime; } //schauen, ob das Ziel noch in Reichweite ist oder gelöscht wurde if (hasTarget) { if (targetEnemy == null) { hasTarget = false; } else { float distanceToTarget = Vector3.Distance(transform.position, targetEnemy.transform.position); if (distanceToTarget > radius) { hasTarget = false; //targetEnemy = null; } } } //sucht nur Ziele, wenn es kein akutelles Ziel gibt. if (!hasTarget) { searchTarget(); } //immer ausführen if (hasTarget) { Vector3 vecToEnemy = targetEnemy.transform.position - thistransform.position; //evtl. vorhalten: bewegungsgeschw. * flugzeit des projektils + position gegner //Geschütz etc ausrichten, Vektor: gegner - eigene pos //if has rotatable base... //feuern if (actualIntervallTime <= 0.0f) { //projektil erzeugen GameObject projectileInstance = Instantiate(projectilePrefab); TestProjectile projScript = projectileInstance.GetComponent <TestProjectile> (); projScript.setup(transform.position, vecToEnemy); //wartezeit (intervall) bis zum nächst möglichen angriff actualIntervallTime = fireIntervall; } } }
// Use this for initialization void Start() { thistransform = gameObject.transform; fireIntervall = 1.0f; actualIntervallTime = 0.0f; radius = 8f; //radius = GetComponent<CircleCollider2D>().radius; hasTarget = false; projectileScript = projectilePrefab.GetComponent <TestProjectile>(); }