Unityでオブジェクトを生成するInstantiateという関数がありますが、その第2引数が座標となります。
https://www.sejuku.net/blog/48180
出現位置は、空のオブジェクトから取得するよりも、Vector3型配列で宣言するほうが無駄がありません。
【追記】暇だったんで作りました
C#
1 public class Test : MonoBehaviour {
2 [SerializeField] GameObject _prefab;
3
4 // この座標は適当です。画面サイズに合わせて要変更。
5 // float型配列でX座標のみ保存してもいいかも
6 Vector3[] _generatePoint = {
7 new Vector3(-5.0f, 10.0f, 0.0f),
8 new Vector3(0.0f, 10.0f, 0.0f),
9 new Vector3(5.0f, 10.0f, 0.0f)
10 };
11
12 float _span;
13 float _time = 0.0f;
14
15 private void Awake() {
16 ChangeSpan();
17 }
18
19 private void Update() {
20 _time += Time.deltaTime;
21 if (_time > _span) {
22 int index = Random.Range(0, 3); // 生成する場所の決定
23 Instantiate(_prefab, (transform.position + _generatePoint[index]), Quaternion.identity);
24 ChangeSpan();
25 _time = 0.0f;
26 }
27 }
28
29 private void ChangeSpan() {
30 _span = Random.Range(1.0f, 3.0f); // 1秒から3秒おき
31 }
32 }
このスクリプトをプレイヤに貼り付け、生成したいオブジェクトをインスペクターから_prefabに指定してください。
オブジェクトの出現位置は、カメラでなくプレイヤの位置を基準にしています。また、Main Cameraをプレイヤの子にすることでプレイヤを追尾させています。
あなたが前回作った、CarMoveスクリプトを併用しています。
適当なテストしかしてないのでバグがあるかもしれません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/09/25 13:50
2022/09/25 15:38 編集
2022/09/28 11:52