void Update() { // 2 - Проверить, начался ли спавн врагов. if (hasSpawn == false) { if (ScrollingScript.IsVisibleFrom(GetComponent <Renderer>(), Camera.main)) //renderer.IsVisibleFrom(Camera.main) { Spawn(); } } else { // автоматическая стрельба foreach (WeaponScript weapon in weapons) { if (weapon != null && weapon.enabled && weapon.CanAttack) { weapon.Attack(true); SoundEffectsHelper.Instance.MakeEnemyShotSound(); } } // 4 – Выход за рамки камеры? Уничтожить игровой объект. if (!ScrollingScript.IsVisibleFrom(GetComponent <Renderer>(), Camera.main)) { Destroy(gameObject); } } }
void Update() { if (HS.hp > MaxHP * 3 / 4) { BodySprite.sprite = BossBodies[0]; } else if (HS.hp > MaxHP / 2) { BodySprite.sprite = BossBodies[1]; } else if (HS.hp > MaxHP / 4) { BodySprite.sprite = BossBodies[2]; } else { BodySprite.sprite = BossBodies[3]; } // Проверим появился ли враг if (hasSpawn == false) { // Для простоты проверим только первый рендерер // Но мы не знаем, если это тело, и глаз или рот ... if (ScrollingScript.IsVisibleFrom(renderers[0], Camera.main)) { Spawn(); } } else { // AI //------------------------------------ // Перемещение или атака. aiCooldown -= Time.deltaTime; if (aiCooldown <= 0f) { isAttacking = !isAttacking; aiCooldown = Random.Range(minAttackCooldown, maxAttackCooldown); positionTarget = Vector2.zero; // Настроить или сбросить анимацию атаки animator.SetBool("Attack", isAttacking); } // Атака //---------- if (isAttacking) { // Остановить все движения moveScript.direction = Vector2.zero; foreach (WeaponScript weapon in weapons) { if (weapon != null && weapon.enabled && weapon.CanAttack) { weapon.Attack(true); SoundEffectsHelper.Instance.MakeEnemyShotSound(); } } } // Перемещение //---------- else { // Выбрать цель? if (positionTarget == Vector2.zero) { // Получить точку на экране, преобразовать ее в цель в игровом мире Vector2 randomPoint = new Vector2(Random.Range(0f, 1f), Random.Range(0f, 1f)); positionTarget = Camera.main.ViewportToWorldPoint(randomPoint); } // У нас есть цель? Если да, найти новую Collider2D col = GetComponent <Collider2D>(); if (col.OverlapPoint(positionTarget)) { // Сбросить, выбрать в следующем кадре positionTarget = Vector2.zero; } // Идти к точке Vector3 direction = ((Vector3)positionTarget - this.transform.position); // Помните об использовании скрипта движения moveScript.direction = Vector3.Normalize(direction); } } }