Зелёный - префаб, Крассный - объекты слоданный с помощью префаба.
Сам объект, созданный с помощью его:
Код скрипта в префабе:
using UnityEngine;
using System.Collections;
public class UpWall : MonoBehaviour {
public Transform camer;
public camera cam;
private Transform pointDistans;
private float distans;
public float distansSpawn = 12f;
public float speedUp = 5f;
private float count;
public GameObject[] barriers;
// Use this for initialization
void Start () {
pointDistans = GameObject.Find("point").GetComponent<Transform>();
count = transform.position.y + 41f;
int rand = (int)Mathf.Round(Random.Range (0, barriers.Length));
Debug.Log (rand);
GameObject inst = Instantiate (barriers[rand]);
inst.transform.parent = transform;
inst.transform.position = transform.position;
distansSpawn += cam.speed / 5f;
}
// Update is called once per frame
// Высчитывает расстояние от барьера до камеры при нужном расстоянии, подымает его.
void FixedUpdate () {
distans = Vector3.Distance (pointDistans.position, camer.position);
//Debug.Log (distans);
//Debug.Log (transform.position.y);
if (distans <= distansSpawn)
{
if(transform.position.y <= count)
{
transform.Translate(new Vector3(0,41f,0) * speedUp * Time.deltaTime);
}
}
}
}
Код (смотрите всё, что в FixedUpdate) высчитывает расстояние от барьера до камеры при нужном расстоянии, подымает его. На сколько я понимаю, он должен для каждого барьера высчитывать расстояние, но он подымать начинает барьеры, когда подходит на нужное расстояние от 3-го, хотя первый ещё не поднялся, при этом подниматься все начинают одновременно.
Может я чего-то не понимаю. Помогите.