ゲーム開発していると、ランダムに敵やアイテムを配置したくなることがあるかと思います。
この記事はそんな方向けの記事です。
↓の動画では、一定時間ごとに泡を画面下側でランダムに生成し、上方向に飛んでいくようにスクリプトで動かしています。
【フリーBGM】シャボン玉が飛んでいる雰囲気のBGM
オブジェクトのランダム生成スクリプト
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class MakePrefab : MonoBehaviour { // Start is called before the first frame update public GameObject obj; float dt; float UPDATE_TIME = 0.1f; void Start() { dt = 0.0f; } // Update is called once per frame void Update() { dt += Time.deltaTime; /* 一定時間経過したら */ if( dt > UPDATE_TIME) { /* 生成位置を決める */ float x = Random.Range(-15.0f, 15.0f); float z = Random.Range(-10.0f, 10.0f); float y = -13.0f; /* オブジェクトを生成する */ Instantiate(obj, new Vector3(x, y, z), Quaternion.identity); dt = 0.0f; } } } |
泡を上方向に飛ばすスクリプト
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BubbleController : MonoBehaviour { private Rigidbody rigid; private Vector3 pos; private float dt; private float UPDATE_TIME = 1.5f; /* バブルの位置を変化させる速度 */ private float DELTA_UPSPEED = 0.03f; /* バブルが浮く速度 */ private float DELTA_YURE = 0.3f; void Start() { rigid = GetComponent<Rigidbody>(); pos = transform.position; dt = 0.0f; DELTA_UPSPEED = Random.Range(0.01f, 0.03f); DELTA_YURE = Random.Range(0.3f, 1.0f); } // Update is called once per frame void Update() { /* バブルがy=30.0に到達したら消滅させる */ if( this.transform.position.y > 30.0f) { Destroy(this.gameObject); } /* バブルを上に上昇させながら、揺らす */ dt += Time.deltaTime; if( dt > UPDATE_TIME ) { pos.y = pos.y + DELTA_UPSPEED; rigid.MovePosition(new Vector3(pos.x + Mathf.PingPong((Time.time/3), DELTA_YURE), pos.y, pos.z)); } } void FixedUpdate() { } } |
コメント