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

回答編集履歴

3

編集

2020/08/21 18:08

投稿

tsuki01
tsuki01

スコア1751

answer CHANGED
@@ -2,10 +2,13 @@
2
2
  スクリプトのスクショもありがとうございました。
3
3
  弾丸のスピードが変わらなかったのは、弾丸のRotation指定などが悪影響していたかもしれません。
4
4
 
5
- また現在のスクリプトだとそもそも「向いている方向に発射する」という仕様を実現できないと思うので
5
+ また現在のスクリプトだとそもそも、 **「向いている方向に発射する」** という仕様を実現できないと思うので、それぞれのスクリプトを以下の様に変更した方が処理がスッキリすると思われます。
6
- それぞれのスクリプトを以下の様に変更した方が、処理がスッキリすると思われます。
7
6
 
7
+ **「やはりスピードが変わらない」などあればご指摘ください**
8
+ (弾丸となるカプセルオブジェクトは、こちらで少し工夫したので横を向いていますが、質問者様の方だともしかしたら向きがおかしくなるかもです。その場合は別途ご質問ください)
9
+
10
+
8
- **弾丸のプレハブにアタッチするスクリプト(弾丸を削除する処理のみにする)**
11
+ **弾丸のプレハブにアタッチするスクリプト(弾丸を削除する処理のみにする)**
9
12
  ```C#
10
13
  using UnityEngine;
11
14
 
@@ -25,7 +28,7 @@
25
28
  ```
26
29
 
27
30
 
28
- **空のオブジェクトにアタッチするスクリプト(こっちに、弾丸のスピードを持たせる)**
31
+ **空のオブジェクトにアタッチするスクリプト(こっちに、弾丸のスピードを持たせる)**
29
32
  ```C#
30
33
  using UnityEngine;
31
34
 
@@ -51,6 +54,9 @@
51
54
  }
52
55
  ```
53
56
 
57
+ **・弾丸オブジェクトのInspector**
58
+ ![弾丸スクショ](d1517867e92deb68cf5cb68462da2f33.png)
59
+
54
60
  **↓動作結果(スピード"100"で連射)**
55
61
  ![サンプル](66bb6472e59c5a881acdea1d500d849f.gif)
56
62
 

2

追記

2020/08/21 18:08

投稿

tsuki01
tsuki01

スコア1751

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

1

編集

2020/08/21 17:58

投稿

tsuki01
tsuki01

スコア1751

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