teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2020/01/18 02:06

投稿

yureighost
yureighost

スコア2183

answer CHANGED
@@ -3,6 +3,39 @@
3
3
  乱数生成メソッドでx軸、y軸毎に一定範囲の負数、正数を作り出してみるとかはどうでしょうか。
4
4
 
5
5
 
6
- 追記
6
+ **追記**
7
7
  角度を使った移動方法ですが、この記事辺りではどうでしょうか。
8
- [【Unity2D】角度と距離からベクトルを作ってAddForceする【Vector2】](http://chroske.hatenablog.com/entry/2016/04/05/210126)
8
+ [【Unity2D】角度と距離からベクトルを作ってAddForceする【Vector2】](http://chroske.hatenablog.com/entry/2016/04/05/210126)
9
+
10
+
11
+ **更に追記**
12
+ Kageyama_23457さんが紹介したページで得たい部分は角度と速度でVettor2Dで生成された移動結果だと推察しますので、座標生成で行ってた部分をこれに置き換えればいいのでしょうはないでしょうか。
13
+ ```C#
14
+ ・・・
15
+ public class ocha02 : MonoBehaviour
16
+ {
17
+ public float Speed;//インスペクタで移動速度を設定
18
+ private bool nonVisibleAct;//映ってなくても動いてる
19
+
20
+ Rigidbody2D rb = null;
21
+ private SpriteRenderer sr = null;//変数宣言
22
+
23
+ void Start()
24
+ {
25
+ rb = GetComponent<Rigidbody2D>();//インスタンス取得
26
+ sr = GetComponent<SpriteRenderer>();//自身が画面に映っているか判断
27
+
28
+ float angle = Random.Range(0, 360); //角度360度をランダムで得たいので乱数で生成する
29
+ float rad = angle * Mathf.Deg2Rad; //角度をラジアン角に変換
30
+
31
+ //rad(ラジアン角)と移動速度から移動用ベクトルを作成
32
+ double addforceX = Math.Sin((rad) * Speed;
33
+ double addforceY = Math.Cos((rad) * Speed;
34
+ Vector2 moveVector = new Vector2((float)addforceX, (float)addforceY);
35
+
36
+ //速度に生成された移動用ベクトルを渡す
37
+ rb.velocity = moveVector;
38
+ }
39
+ }
40
+ ```
41
+ 動作確認はしていませんが、こんなとこでどうでしょう。

1

追記

2020/01/18 02:06

投稿

yureighost
yureighost

スコア2183

answer CHANGED
@@ -1,3 +1,8 @@
1
1
  Rigidbody2D.velocityを移動に使うのでしたら、
2
2
  new Vector2()の引数のx軸に正数を渡せば右、負数なら左、y軸に正数なら上、負数なら下への移動速度を作り出してくれるので、
3
- 乱数生成メソッドでx軸、y軸毎に一定範囲の負数、正数を作り出してみるとかはどうでしょうか。
3
+ 乱数生成メソッドでx軸、y軸毎に一定範囲の負数、正数を作り出してみるとかはどうでしょうか。
4
+
5
+
6
+ 追記
7
+ 角度を使った移動方法ですが、この記事辺りではどうでしょうか。
8
+ [【Unity2D】角度と距離からベクトルを作ってAddForceする【Vector2】](http://chroske.hatenablog.com/entry/2016/04/05/210126)