@PanLipton

Что делать если не работают столкновения C# 2D iOS?

У меня есть игра в которой падают бомбочки, при касании бомбы к игроку, бомбы должны перестать спавнится, но этого не происходит и они продолжают спавнится, что делать?
Вот все мои 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
  • Вопрос задан
  • 36 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы