Отрабатывание столкновения коллизий двух объектов

Программирование на Юнити.

Отрабатывание столкновения коллизий двух объектов

Сообщение ubivashka 11 сен 2019, 19:42

День добрый, возникла проблема с проверкой на столкновение двух колизий, после которых должен вызываться спавн объекта.
Спавнер:
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Spawner : MonoBehaviour
{
    public GameObject[] groups;
    private float[] distance;

    void Start()
    {
        distance = new float[]{0, 1f, 2f, 3f, 4f, 5f, 6f, 7f, 8f, 9f, 10f, 11f };
        SpawnNext();
       

    }
   


    public void SpawnNext()
    {
       
        // Random Index
        int i = Random.Range(0, groups.Length);
        int j = Random.Range(0, 12);

        // Спавн минора
        Instantiate(groups[i],
                    new Vector3(distance[j], 30f, 0f),
                    Quaternion.identity);
    }

    void Update()
    {
       
    }
}
 

Движение объекта и вызов спавнера:
Синтаксис:
Используется csharp
public class BlockMovement : MonoBehaviour
{
    public bool isStill;
    public float speed = 1f;
    private float lastFall;


    void Start()
    {
       
        isStill = false;
    }
    void FixedUpdate()
    {
        if (Time.time - lastFall >= speed && !isStill)
        {
            transform.position += new Vector3(0, -1, 0);
            lastFall = Time.time;
        }
        if (isStill)
        {
            transform.position = transform.position;
        }
    }
    public void OnCollisionEnter(Collision col)
    {
        if (col.gameObject.tag == "Block")
        {
           
            Debug.Log("Collider");

            isStill = true;

            FindObjectOfType<Spawner>().SpawnNext();
            enabled = false;
        }
       
       
    }
}

Спавнер создает один из семи объктов, которые созданы из кубок с коллизией(1,1,1). В начале сцены, создается объект, перемещается как положено и после удара со сценой останавливается, создается еще один объект, но если фигура имеет 2 коллайдера которые ударяются об сцену, скрипт спавнит 2 объекта, такая же история происходит и если объекты с объектами соприкасаются. Уже голову сломал себе, не понимаю просто как сделать, чтобы после окончания движения блока спавнер вызывался только один раз. Цель сделать бесконечный колодец с объектами которые будут спавниться и перемещаться через определенное время с большей скоростью
ubivashka
UNец
 
Сообщения: 1
Зарегистрирован: 05 сен 2019, 22:19

Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8