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

回答編集履歴

1

サンプルソース追記

2017/07/24 07:18

投稿

rururu3
rururu3

スコア5545

answer CHANGED
@@ -7,4 +7,59 @@
7
7
  だと多分Barrettの回転XYZは0, 0, 0でしょうからZにしか行かないと思います。
8
8
 
9
9
  Barrett生成時に自機のthis.transform.forwardをBarrettに渡してあげて、このベクトルを利用して進めさせるようにすればいいのではないでしょうか。
10
- (自機の回転を渡してもできるはずですが、色々ややこしいので向きベクトルでやるのをお勧めします)
10
+ (自機の回転を渡してもできるはずですが、色々ややこしいので向きベクトルでやるのをお勧めします)
11
+
12
+ コードの書き方は勉強していってほしいところですが、とりあえずサンプル載せておきます。
13
+
14
+ ```C#
15
+ using System.Collections;
16
+ using System.Collections.Generic;
17
+ using UnityEngine;
18
+
19
+ public class Player : MonoBehaviour {
20
+
21
+ public Barrett barrett;
22
+
23
+ // Use this for initialization
24
+ void Start () {
25
+
26
+ }
27
+
28
+ // Update is called once per frame
29
+ void Update () {
30
+ if(Input.GetKey(KeyCode.R))
31
+ {
32
+ this.transform.Rotate(0.0f, 1.0f, 0.0f);
33
+ }
34
+
35
+ if(Input.GetKeyUp(KeyCode.Space))
36
+ {
37
+ Barrett _b = (Barrett)Instantiate(this.barrett, this.transform.position, this.transform.rotation);
38
+ _b.forward = this.transform.forward;
39
+ }
40
+ }
41
+ }
42
+ ```
43
+
44
+ ```C#
45
+ using System.Collections;
46
+ using System.Collections.Generic;
47
+ using UnityEngine;
48
+
49
+ public class Barrett : MonoBehaviour {
50
+
51
+ public Vector3 forward;
52
+ public float bulletSpeed = 1.0f;
53
+
54
+ // Use this for initialization
55
+ void Start () {
56
+ var rid = GetComponent<Rigidbody>();
57
+ rid.velocity = this.forward * bulletSpeed;
58
+ }
59
+
60
+ // Update is called once per frame
61
+ void Update () {
62
+
63
+ }
64
+ }
65
+ ```