回答編集履歴

3

編集

2020/08/21 18:08

投稿

tsuki01
tsuki01

スコア1751

test CHANGED
@@ -6,13 +6,19 @@
6
6
 
7
7
 
8
8
 
9
- また現在のスクリプトだとそもそも「向いている方向に発射する」という仕様を実現できないと思うので
9
+ また現在のスクリプトだとそもそも、 **「向いている方向に発射する」** という仕様を実現できないと思うので、それぞれのスクリプトを以下の様に変更した方が処理がスッキリすると思われます。
10
-
11
- それぞれのスクリプトを以下の様に変更した方が、処理がスッキリすると思われます。
12
10
 
13
11
 
14
12
 
13
+ **「やはりスピードが変わらない」などあればご指摘ください**
14
+
15
+ (弾丸となるカプセルオブジェクトは、こちらで少し工夫したので横を向いていますが、質問者様の方だともしかしたら向きがおかしくなるかもです。その場合は別途ご質問ください)
16
+
17
+
18
+
19
+
20
+
15
- **弾丸のプレハブにアタッチするスクリプト(弾丸を削除する処理のみにする)**
21
+ **弾丸のプレハブにアタッチするスクリプト(弾丸を削除する処理のみにする)**
16
22
 
17
23
  ```C#
18
24
 
@@ -52,7 +58,7 @@
52
58
 
53
59
 
54
60
 
55
- **空のオブジェクトにアタッチするスクリプト(こっちに、弾丸のスピードを持たせる)**
61
+ **空のオブジェクトにアタッチするスクリプト(こっちに、弾丸のスピードを持たせる)**
56
62
 
57
63
  ```C#
58
64
 
@@ -101,6 +107,12 @@
101
107
  }
102
108
 
103
109
  ```
110
+
111
+
112
+
113
+ **・弾丸オブジェクトのInspector**
114
+
115
+ ![弾丸スクショ](d1517867e92deb68cf5cb68462da2f33.png)
104
116
 
105
117
 
106
118
 

2

追記

2020/08/21 18:08

投稿

tsuki01
tsuki01

スコア1751

test CHANGED
@@ -1,3 +1,125 @@
1
+ ### 2020.08.22追記
2
+
3
+ スクリプトのスクショもありがとうございました。
4
+
5
+ 弾丸のスピードが変わらなかったのは、弾丸のRotation指定などが悪影響していたかもしれません。
6
+
7
+
8
+
9
+ また現在のスクリプトだと、そもそも「向いている方向に発射する」という仕様を実現できないと思うので
10
+
11
+ それぞれのスクリプトを以下の様に変更した方が、処理がスッキリすると思われます。
12
+
13
+
14
+
15
+ **弾丸のプレハブにアタッチするスクリプト(弾丸を削除する処理のみにする)**
16
+
17
+ ```C#
18
+
19
+ using UnityEngine;
20
+
21
+
22
+
23
+ public class ExBulletPrefab : MonoBehaviour
24
+
25
+ {
26
+
27
+ public float timer = 1.0f;
28
+
29
+
30
+
31
+ void Update()
32
+
33
+ {
34
+
35
+ // 指定秒数後にオブジェクトを削除する
36
+
37
+ timer -= Time.deltaTime;
38
+
39
+ if (timer < 0.0) {
40
+
41
+ Destroy(this.gameObject);
42
+
43
+ }
44
+
45
+ }
46
+
47
+ }
48
+
49
+ ```
50
+
51
+
52
+
53
+
54
+
55
+ **空のオブジェクトにアタッチするスクリプト(こっちに、弾丸のスピードを持たせる)**
56
+
57
+ ```C#
58
+
59
+ using UnityEngine;
60
+
61
+
62
+
63
+ public class ExBullet : MonoBehaviour
64
+
65
+ {
66
+
67
+ [SerializeField]private GameObject bulletPrefab; // 弾丸のプレハブ設定用
68
+
69
+ [SerializeField]private float shotSpeed = 10f; // 弾丸のスピード設定用(デフォルト"10")
70
+
71
+
72
+
73
+
74
+
75
+ void Update()
76
+
77
+ {
78
+
79
+ // マウス押下時処理
80
+
81
+ if (Input.GetMouseButtonDown(0)) {
82
+
83
+
84
+
85
+ // プレハブから、GameObjectを生成する
86
+
87
+ // ※このスクリプトがアタッチされているオブジェクト(Bulletオブジェクト)と同じ位置に生成する
88
+
89
+ GameObject bulletObj = Instantiate(bulletPrefab, transform);
90
+
91
+
92
+
93
+ // 生成されたGameObjectから"RigidBody"取得後、指定したスピードで動かす
94
+
95
+ bulletObj.GetComponent<Rigidbody>().AddForce(transform.forward * shotSpeed, ForceMode.Impulse);
96
+
97
+ }
98
+
99
+ }
100
+
101
+ }
102
+
103
+ ```
104
+
105
+
106
+
107
+ **↓動作結果(スピード"100"で連射)**
108
+
109
+ ![サンプル](66bb6472e59c5a881acdea1d500d849f.gif)
110
+
111
+
112
+
113
+
114
+
115
+
116
+
117
+ ---
118
+
119
+
120
+
121
+ ### 当初の回答
122
+
1
123
  処理の方向性は合っているかと思います。
2
124
 
3
125
  質問者様の処理も以下とほぼ変わらないかと思いますが、こちらの"AddForce"部分と同じ様な処理にしても速度は変わりませんでしょうか。

1

編集

2020/08/21 17:58

投稿

tsuki01
tsuki01

スコア1751

test CHANGED
@@ -1,6 +1,6 @@
1
1
  処理の方向性は合っているかと思います。
2
2
 
3
- 質問者様の処理も以下とほぼ変わらないかと思いますが、こちらも速度は変わりませんでしょうか。
3
+ 質問者様の処理も以下とほぼ変わらないかと思いますが、こちらの"AddForce"部分と同じ様な処理にしても速度は変わりませんでしょうか。
4
4
 
5
5
  変わらない場合、弾丸となるGameObjectの、Inspectorのスクショを質問に追記頂けると助かります。
6
6