Прежде всего, добро пожаловать в stackoverflow.
Судя по тому, что я вижу в видео, вы хотите, чтобы ящик появлялся в определенной позиции x с определенным масштабом, вот код, который я придумал.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BoxSpawn : MonoBehaviour
{
public GameObject box;
public float minXpos, maxXpos;
public float timeBetweenBoxes;
void Start()
{
//starts the loop for spawning boxes
StartCoroutine(SpawnBox());
}
IEnumerator SpawnBox()
{
//get a random position on the x axis
Vector3 boxPos = new Vector3(Random.Range(minXpos, maxXpos), 0, 0);
//spawn the box
Instantiate(box, boxPos, Quaternion.Euler(0, 0, 0));
//let the code wait a certain time
yield return new WaitForSeconds(timeBetweenBoxes);
StartCoroutine(SpawnBox());
}
}
поместите этот скрипт на случайный игровой объект и создайте Prefab из игрового объекта коробки. Перетащите этот префаб на игровой объект / скрипт.
Создайте новый скрипт и поместите этот код в этот скрипт:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Box : MonoBehaviour
{
private float minSize = 0.5f; //minimum size
private float maxSize = 2; //maximum size
private float moveSpeed = 5;
void Start()
{
//changes the size of the object to random values
transform.localScale = new Vector3(Random.Range(minSize, maxSize), Random.Range(minSize, maxSize), Random.Range(minSize, maxSize));
}
void Update()
{
//moves the box in -z axis
transform.Translate(new Vector3(0, 0, 1) * moveSpeed * Time.deltaTime);
//destroys gameobject after a number of seconds (OPTIONAL BUT RECOMMENDED)
//Destroy(gameObject, 10);
}
}
Поместите этот скрипт в созданный вами префаб и перетащите его в папку с ресурсами, чтобы сохранить префаб, укажите в нем ссылку на игровой объект Spawner, и он должен работать.
если вы хотите, чтобы ящики перемещались физически добавить к нему компонент Rigidbody