Barrettがビームのオブジェクトとして
transform.rotation * Vector3.forward * bulletSpeed;
だと多分Barrettの回転XYZは0, 0, 0でしょうからZにしか行かないと思います。
Barrett生成時に自機のthis.transform.forwardをBarrettに渡してあげて、このベクトルを利用して進めさせるようにすればいいのではないでしょうか。
(自機の回転を渡してもできるはずですが、色々ややこしいので向きベクトルでやるのをお勧めします)
コードの書き方は勉強していってほしいところですが、とりあえずサンプル載せておきます。
C#
1using System.Collections;
2using System.Collections.Generic;
3using UnityEngine;
4
5public class Player : MonoBehaviour {
6
7 public Barrett barrett;
8
9 // Use this for initialization
10 void Start () {
11
12 }
13
14 // Update is called once per frame
15 void Update () {
16 if(Input.GetKey(KeyCode.R))
17 {
18 this.transform.Rotate(0.0f, 1.0f, 0.0f);
19 }
20
21 if(Input.GetKeyUp(KeyCode.Space))
22 {
23 Barrett _b = (Barrett)Instantiate(this.barrett, this.transform.position, this.transform.rotation);
24 _b.forward = this.transform.forward;
25 }
26 }
27}
C#
1using System.Collections;
2using System.Collections.Generic;
3using UnityEngine;
4
5public class Barrett : MonoBehaviour {
6
7 public Vector3 forward;
8 public float bulletSpeed = 1.0f;
9
10 // Use this for initialization
11 void Start () {
12 var rid = GetComponent<Rigidbody>();
13 rid.velocity = this.forward * bulletSpeed;
14 }
15
16 // Update is called once per frame
17 void Update () {
18
19 }
20}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/23 10:14
2017/07/25 14:33