unity 間隔を開けて横にオブジェクトを生成させる方法を教えてください
Q&A
オブジェクトが二つ以上生成したときに間隔を開けて横に生成されるプログラムを教えてください
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class b : MonoBehaviour
{
private Animator animator;
private int number,i,z,count,countdown;
private string currentStateName;
private float _repeatSpan; //繰り返す間隔
private float _horyuuSpan;
private float _timeElapsed2;
private float _timeElapsed; //経過時間
private GameObject kaitenText; // 回転数を表記
[SerializeField]private GameObject insObj;//生成するオブジェクト(Unityのインスペクターでアタッチしてください)
private List<GameObject> insObjList = new List<GameObject>();//生成したオブジェクトのリスト
private void Start()
{
count=0;//保留数
countdown=0;
_repeatSpan = 9;
_horyuuSpan = 3;
_timeElapsed = 0; //経過時間をリセット
_timeElapsed2=0;
}
void Update()
{
number = Random.Range (1, 9);
animator = GetComponent<Animator>();
animator.SetInteger("taiki",i);
animator.SetInteger("wait",z);
if(Input.GetKeyDown(KeyCode.LeftArrow))//カウンター
{
if(_timeElapsed<=3){
i=1;
}
animator.SetInteger("zugara",number);
if(count<=4){
count+=1;
countdown=1;
z=1;
Debug.Log("カウント+1");
Debug.Log(count);
//ここでオブジェクト生成
//消すためにListに保持
insObjList.Add(Instantiate (insObj));
}
}
if(i==1){
_timeElapsed2 +=Time.deltaTime;
}
if (_timeElapsed2 >= _horyuuSpan)
{
i=0;
Debug.Log("待機");
_timeElapsed2= 0; //経過時間をリセットする
}
//時間をカウントする
if(countdown==1){
_timeElapsed += Time.deltaTime;
}
//経過時間が繰り返す間隔を経過したら
if (_timeElapsed >= _repeatSpan)
{
count--;
Debug.Log("カウント-1");
Debug.Log(count);
if(0<count&&count<=4)
{
i=1;
Debug.Log("待機解除");
animator.SetInteger("zugara",number);
}
countdown=0;
_timeElapsed = 0;
_timeElapsed2= 0;//経過時間をリセットする
if(0<count&&count<=4)
{
countdown=1;
}
if(insObjList.Count != 0)
{
int index = 0;//任意の配列番号
Destroy(insObjList[index]);//オブジェクト消す
insObjList.RemoveAt(0);//箱から消す
}
}
}
}
0