Answer the question
In order to leave comments, you need to log in
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);
}
}
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
}
}
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question