Спавнер:
Синтаксис:
Используется 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()
{
}
}
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;
}
}
}
{
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 объекта, такая же история происходит и если объекты с объектами соприкасаются. Уже голову сломал себе, не понимаю просто как сделать, чтобы после окончания движения блока спавнер вызывался только один раз. Цель сделать бесконечный колодец с объектами которые будут спавниться и перемещаться через определенное время с большей скоростью