質問編集履歴
1
n-Way弾を生成する具体的な関数、崩れたn-Way弾の図を追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,9 +2,77 @@
|
|
2
2
|
|
3
3
|
弾幕STGで、弾を発射・動かすスクリプトがおよそ完成したので、
|
4
4
|
|
5
|
-
次のステップとして、n-Way弾や全方位弾などの
|
5
|
+
次のステップとして、n-Way弾や全方位弾などの関数を作ろうとしています。
|
6
6
|
|
7
|
-
実現したいものは、基本的な直線加減速だけの
|
7
|
+
実現したいものは、基本的な直線加減速だけの関数です。
|
8
|
+
|
9
|
+
下記にn-Way弾の関数を示します。
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
```c#
|
14
|
+
|
15
|
+
///<summary>
|
16
|
+
|
17
|
+
///nWay弾を発射します。
|
18
|
+
|
19
|
+
///<param name="BulletID">弾ID</param>
|
20
|
+
|
21
|
+
///<param name="color">弾の色</param>
|
22
|
+
|
23
|
+
///<param name="shotPosition">生成座標</param>
|
24
|
+
|
25
|
+
///<param name="z">弾の初期z座標(表示順を調整)</param>
|
26
|
+
|
27
|
+
///<param name="speed">初速</param>
|
28
|
+
|
29
|
+
///<param name="baseAngle">基準角度(°)</param>
|
30
|
+
|
31
|
+
///<param name="accel">加速度</param>
|
32
|
+
|
33
|
+
///<param name="limitSpeed">最高・最低速度(加速度0の時は無効)</param>
|
34
|
+
|
35
|
+
///<param name="n">way数</param>
|
36
|
+
|
37
|
+
///<param name="angSpace">角度間隔</param>
|
38
|
+
|
39
|
+
///</summary>
|
40
|
+
|
41
|
+
public static void ShootNway(int BulletID,string color,Vector2 shotPosition,float z,int speed,
|
42
|
+
|
43
|
+
float baseAngle,int accel,int limitSpeed,int n,float angSpace){
|
44
|
+
|
45
|
+
if(n<=0){
|
46
|
+
|
47
|
+
Debug.Log("way数が0以下になっています");
|
48
|
+
|
49
|
+
return;
|
50
|
+
|
51
|
+
}
|
52
|
+
|
53
|
+
if(n>=1){
|
54
|
+
|
55
|
+
for(int i=0;i<n;i++){
|
56
|
+
|
57
|
+
float ang_i = baseAngle+(angSpace*0.5f)*(2*i-n+1);
|
58
|
+
|
59
|
+
float z_i = z+Time.deltaTime*i;
|
60
|
+
|
61
|
+
//CreateShot01は加減速可能な直進弾を生成する関数です。
|
62
|
+
|
63
|
+
CreateShot01(BulletID,color,shotPosition,z_i,speed,ang_i,accel,limitSpeed);
|
64
|
+
|
65
|
+
}
|
66
|
+
|
67
|
+
return;
|
68
|
+
|
69
|
+
}
|
70
|
+
|
71
|
+
}
|
72
|
+
|
73
|
+
```
|
74
|
+
|
75
|
+
|
8
76
|
|
9
77
|
|
10
78
|
|
@@ -14,11 +82,13 @@
|
|
14
82
|
|
15
83
|
フレームで動かして確認した限り、ズレている弾だけ、1回目の速度更新が行われていない様子でした。
|
16
84
|
|
17
|
-
|
85
|
+
![崩れたn-Way弾の図](40f48588af72da8d0f1fab281e3b8188.png)
|
18
86
|
|
19
87
|
|
20
88
|
|
21
89
|
### 該当のソースコード
|
90
|
+
|
91
|
+
上記のShootNwayではなく、速度を更新する下記ModifyDirection関数に問題があるのではないかと思っています。
|
22
92
|
|
23
93
|
速度(と角度)をint型で保存し、角度から作った単位ベクトルに速度をかける形です。
|
24
94
|
|