P
P
PanLipton2020-04-04 15:13:37
iOS
PanLipton, 2020-04-04 15:13:37

What to do if C# 2D iOS collisions don't work?

I have a game in which bombs fall, when the bomb touches the player, the bombs should stop spawning, but this does not happen and they continue to spawn, what should I do?
Here are all my 4 scripts in the game:

Drop script (it hangs on the bomb prefab):

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


Script for spawning bombs (hanging on the camera):
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 сек

    	}
    }
}


Player control script (hangs on a cube without a sprite with one collider):

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) за мышкой + медленное движение за мышкой
   	}
   }
}


Player script (hangs on the player):
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
  }
    
}


Trigger bomb, using MonoDevelop, on a RigidBody 2D player with 0 Gravity Scale. I created the bomb and added the Bomb tag

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question