У меня есть игра в которой падают бомбочки, при касании бомбы к игроку, бомбы должны перестать спавнится, но этого не происходит и они продолжают спавнится, что делать?
Вот все мои 4 скрипта в игре:
Скрипт падения(на префабе бомбы висит):
using UnityEngine;
public class FallDown : MonoBehaviour
{
[SerializeField] // Открываем для юнити
private float fallSpeed = 3f; // Скрытое от юнити
void Update() {
if (transform.position.y < -6f) // Если позиция меньше -6y
Destroy (gameObject); // Объект уничтожается
transform.position -= new Vector3 (0, fallSpeed * Time.deltaTime, 0);
}
}
Cкрипт спавна бомб(на камере висит):
using System.Collections;
using UnityEngine;
public class SpawnBombs : MonoBehaviour
{
public GameObject bomb; // Объявление объекта в скрипте
void Start(){
StartCoroutine (Spawn()); // Создаёт спавн бомбочек
}
IEnumerator Spawn () { // создание куратины
while (!Player.lose) { // бесконечный цикл до cтолкновения
Instantiate (bomb, new Vector2 (Random.Range (-2.5f, 2.5f), 5.5f), Quaternion.identity); // Диапазон спавна бомб по x (-2.5f, 2.5f), по y (5.5f), Quaternion.identity - наклон
yield return new WaitForSeconds (0.8f); // Спавн каждые 0.8 сек
}
}
}
Скрипт управления игрока (висит на кубе без спрайта с одним колайдером):
using UnityEngine;
public class MovePlayer : MonoBehaviour
{
public Transform player;
[SerializeField] // Делает видной
private float speed = 10f; // private -- не видна в юнити
void OnMouseDrag () {
if (!Player.lose) {
Vector3 mousePos = Camera.main.ScreenToWorldPoint (Input.mousePosition);
mousePos.x = mousePos.x > 2.5f ? 2.5f : mousePos.x; // Не пускает правее(кордианты)
mousePos.x = mousePos.x < -2.5f ? -2.5f : mousePos.x; // Не пускает левее(кординаты)
player.position = Vector2.MoveTowards (player.position,
new Vector2 (mousePos.x, player.position.y), speed * Time.deltaTime); // Движение по (x) за мышкой + медленное движение за мышкой
}
}
}
Скрипт игрока(висит на игроке):
using UnityEngine;
public class Player : MonoBehaviour
{
public static bool lose = false; // статическая переменная из любого класса, когда сталкиваемсмя с бомбой ставим true и всё
void OnTriggerEnter2D (Collider2D other) { // будет работать когда столкн. объектов
if (other.gameObject.tag == "Bomb") // Если касание с тэгом бомб
lose = true; // lose изначальн равна true
}
}
Бомба тригерная, использую MonoDevelop, на игроке RigidBody 2D с 0 Gravity Scale. Бомбе я создал и добавил тег Bomb