ランダム生成したアイテムを、それぞれランダムな方向に移動させたい
Unity、C#ともに初心者なので、至らぬ点あるかと思いますがご容赦ください。
Unityの3Dモードで、タテスクロールの障害物競争のようなゲームを作っています。
具体的に書くと、「自機キャラがいて、他に3人ほどCPUがいて、ゴールを目指す。
途中、①障害物(当たり判定使用)、②加速アイテム(一定時間速くなる)、そして③アビリティアイテムがある。
アビリティアイテム→取るととそのキャラごとの必殺技が使えて、他キャラへの妨害などができる。
CPUも障害物を避けたり加速アイテムやアビリティアイテムを狙ってきたりする。」といったところです。
この度は、ランダムに生成した加速アイテムの移動について質問致します。
現在実装しているスクリプト
①アイテム生成担当のオブジェクト(空のオブジェクト)につけているスクリプト
x、yともランダムな場所に加速アイテムが出てくれます。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class ocha : MonoBehaviour 6{ 7 public GameObject ochaPrefab;//なんのプレハブを量産するのか 8 private float interval;//何秒ごとに生成するのか 9 private float time = 0f;//経過時間 10 11 void Start() 12 { 13 interval = 1f;//何秒ごとに生成するのか設定(1秒ごと) 14 } 15 16 void Update() 17 { 18 time += Time.deltaTime; 19 20 if (time > interval)//経過時間が生成時間になったら(1秒たったら) 21 { 22 GameObject ocha = Instantiate(ochaPrefab);//お茶を生成する 23 float x = Random.Range(-8f, 8f);//x軸上限はとりあえず8。見切れたり逆に狭かったら訂正 24 float y = Random.Range(-4f, -200f);//y軸マイナス最大値はとりあえず200。ゴールよりむこうに出るようなら訂正 25 ocha.transform.position = new Vector2(x, y); 26 time = 0f;//経過時間初期化 27 } 28 } 29}
②大量生産するアイテム(プレハブ)につけるスクリプト
ご教授頂き、0度〜360度の中からランダムに方向を決め移動させることができました。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class ocha03 : MonoBehaviour 6{ 7 private float Speed=1;//なぜかここをどれだけ大きくしても速くならないので、下の☆で掛け算してます 8 private bool nonVisibleAct;//映ってなくても動いてる 9 10 Rigidbody2D rb = null; 11 private SpriteRenderer sr = null; 12 13 void Start() 14 { 15 rb = GetComponent<Rigidbody2D>(); 16 sr = GetComponent<SpriteRenderer>();//自身が画面に映っているか判断 17 18 float angle = Random.Range(0, 360);//0度〜360度の中からランダムに角度(方向)を取得 19 float rad = angle * Mathf.Deg2Rad;//取得した角度をラジアン角に変換(数学ワカンナイデス) 20 21 double addforceX = Mathf.Sin((rad) * Speed); 22 double addforceY = Mathf.Cos((rad) * Speed);//上の2行で取得した方向をaddforceに代入 23 Vector2 moveVector = new Vector2((float)addforceX, (float)addforceY);//Vector2(速度)をaddforceから取得 24 25 rb.velocity = moveVector*4;//☆インスタンスに速度を渡す 26 } 27}
補足情報(FW/ツールのバージョンなど)
■作業環境
Mac Sierra10.12.6(8GB)
Unity2018 4.14f1
■ここまで出来ていること
・プレイヤーキャラクターのアニメ遷移
(待機時:歩いている→下キー入力:走る(手足の動きが早くなる))
・プレイヤーキャラクターの下と左右の移動。上に行く必要はないので、上キーを入力しても動きません。
・カメラのプレイヤー追従(y軸のみ)
・障害物の生成
(車です。このページの加速アイテムと同様にランダム生成後、左右どちらかに走ります)
・CPUキャラの自走(y軸下に向けて進むだけですが)
前回、同じゲームで、「加速アイテムに制限時間をつけたい」と質問し、
解決に至るご教授を頂いたので、そちらのページも貼っておきます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/18 00:37
2020/01/18 01:39
2020/01/18 02:35