前提・実現したいこと
Unityでシューティングゲームを作っており、その中でプレイヤーに向かって直線的に向かってくる弾(所謂自機狙い)を作ろうとしています。
発生している問題・エラーメッセージ
以下のソースコードで試してみたのですが、弾が敵から全く出てきません。その以外は正常に動いています。エラーメッセージはありませんでした。
該当のソースコード
(関係ありそうな部分のみ載せています)
敵に関するスクリプト
C#
1public GameObject target,bullet2; 2float frame=0; 3 4 public void Update() 5 { 6 //敵の移動 7 Vector2 direction = new Vector2(5*Mathf.Sin(frame*variable), 0); 8 GetComponent<Rigidbody2D>().velocity = direction * spaceship.speed; 9 10 //自機狙い弾の生成 11 if(frame%50==0 && target!=null) 12 { 13 Quaternion homingRotate = Quaternion.LookRotation(target.transform.position - transform.position); 14 Instantiate(bullet2, transform.position, homingRotate); 15 } 16 17 frame++; 18 }
弾に関するスクリプト
C#
1public class Bullet_rapid : MonoBehaviour { 2 public int speed = 4; 3 public float lifeTime = 5; 4 5 void Start () 6 { 7 GetComponent<Rigidbody2D>().velocity = transform.up.normalized * speed; 8 Destroy(gameObject, lifeTime); 9 }
bullet2には自機狙いの弾を、targetにはプレイヤーをセットしました。
試したこと
ここに書いたソースコード以外にもLookAtを用いたり弾とプレイヤーをむすぶベクトルを用いたりして自機狙いを作ろうとしてみましたが、いずれもエラーはないものの弾が生成されなかったり生成されてもなぜか真上に飛んでしまったりとうまくいきませんでした。
その他
Unityのバージョンは5.5.1です。
弾の生成に関してはInstantiateを使う方法のみ知っています。もし他にもっと良い方法があるよという方がいらっしゃればご教授していただけると嬉しいです。よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/14 18:28 編集
2017/03/15 03:03