質問編集履歴
2
書式変更
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,50 +1,50 @@
|
|
1
|
-
###前提・実現したいこと
|
1
|
+
### 前提・実現したいこと
|
2
|
-
Unityでシューティングゲームを作っており、その中でプレイヤーに向かって直線的に向かってくる弾(所謂自機狙い)を作ろうとしています。
|
2
|
+
Unityでシューティングゲームを作っており、その中でプレイヤーに向かって直線的に向かってくる弾(所謂自機狙い)を作ろうとしています。
|
3
|
-
|
3
|
+
|
4
|
-
###発生している問題・エラーメッセージ
|
4
|
+
### 発生している問題・エラーメッセージ
|
5
|
-
以下のソースコードで試してみたのですが、弾が敵から全く出てきません。その以外は正常に動いています。エラーメッセージはありませんでした。
|
5
|
+
以下のソースコードで試してみたのですが、弾が敵から全く出てきません。その以外は正常に動いています。エラーメッセージはありませんでした。
|
6
|
-
|
6
|
+
|
7
|
-
###該当のソースコード
|
7
|
+
### 該当のソースコード
|
8
|
-
(関係ありそうな部分のみ載せています)
|
8
|
+
(関係ありそうな部分のみ載せています)
|
9
|
-
|
9
|
+
|
10
|
-
**敵に関するスクリプト**
|
10
|
+
**敵に関するスクリプト**
|
11
|
-
```C#
|
11
|
+
```C#
|
12
|
-
public GameObject target,bullet2;
|
12
|
+
public GameObject target,bullet2;
|
13
|
-
float frame=0;
|
13
|
+
float frame=0;
|
14
|
-
|
14
|
+
|
15
|
-
public void Update()
|
15
|
+
public void Update()
|
16
|
-
{
|
16
|
+
{
|
17
|
-
//敵の移動
|
17
|
+
//敵の移動
|
18
|
-
Vector2 direction = new Vector2(5*Mathf.Sin(frame*variable), 0);
|
18
|
+
Vector2 direction = new Vector2(5*Mathf.Sin(frame*variable), 0);
|
19
|
-
GetComponent<Rigidbody2D>().velocity = direction * spaceship.speed;
|
19
|
+
GetComponent<Rigidbody2D>().velocity = direction * spaceship.speed;
|
20
|
-
|
20
|
+
|
21
|
-
//自機狙い弾の生成
|
21
|
+
//自機狙い弾の生成
|
22
|
-
if(frame%50==0 && target!=null)
|
22
|
+
if(frame%50==0 && target!=null)
|
23
|
-
{
|
23
|
+
{
|
24
|
-
Quaternion homingRotate = Quaternion.LookRotation(target.transform.position - transform.position);
|
24
|
+
Quaternion homingRotate = Quaternion.LookRotation(target.transform.position - transform.position);
|
25
|
-
Instantiate(bullet2, transform.position, homingRotate);
|
25
|
+
Instantiate(bullet2, transform.position, homingRotate);
|
26
|
-
}
|
26
|
+
}
|
27
|
-
|
27
|
+
|
28
|
-
frame++;
|
28
|
+
frame++;
|
29
|
-
}
|
29
|
+
}
|
30
|
-
```
|
30
|
+
```
|
31
|
-
**弾に関するスクリプト**
|
31
|
+
**弾に関するスクリプト**
|
32
|
-
```C#
|
32
|
+
```C#
|
33
|
-
public class Bullet_rapid : MonoBehaviour {
|
33
|
+
public class Bullet_rapid : MonoBehaviour {
|
34
|
-
public int speed = 4;
|
34
|
+
public int speed = 4;
|
35
|
-
public float lifeTime = 5;
|
35
|
+
public float lifeTime = 5;
|
36
|
-
|
36
|
+
|
37
|
-
void Start ()
|
37
|
+
void Start ()
|
38
|
-
{
|
38
|
+
{
|
39
|
-
GetComponent<Rigidbody2D>().velocity = transform.up.normalized * speed;
|
39
|
+
GetComponent<Rigidbody2D>().velocity = transform.up.normalized * speed;
|
40
|
-
Destroy(gameObject, lifeTime);
|
40
|
+
Destroy(gameObject, lifeTime);
|
41
|
-
}
|
41
|
+
}
|
42
|
-
```
|
42
|
+
```
|
43
|
-
bullet2には自機狙いの弾を、targetにはプレイヤーをセットしました。
|
43
|
+
bullet2には自機狙いの弾を、targetにはプレイヤーをセットしました。
|
44
|
-
|
45
|
-
|
44
|
+
|
45
|
+
|
46
|
-
###試したこと
|
46
|
+
### 試したこと
|
47
|
-
ここに書いたソースコード以外にもLookAtを用いたり弾とプレイヤーをむすぶベクトルを用いたりして自機狙いを作ろうとしてみましたが、いずれもエラーはないものの弾が生成されなかったり生成されてもなぜか真上に飛んでしまったりとうまくいきませんでした。
|
47
|
+
ここに書いたソースコード以外にもLookAtを用いたり弾とプレイヤーをむすぶベクトルを用いたりして自機狙いを作ろうとしてみましたが、いずれもエラーはないものの弾が生成されなかったり生成されてもなぜか真上に飛んでしまったりとうまくいきませんでした。
|
48
|
-
###その他
|
48
|
+
### その他
|
49
|
-
Unityのバージョンは5.5.1です。
|
49
|
+
Unityのバージョンは5.5.1です。
|
50
50
|
弾の生成に関してはInstantiateを使う方法のみ知っています。もし他にもっと良い方法があるよという方がいらっしゃればご教授していただけると嬉しいです。よろしくお願いします。
|
1
誤字脱字の訂正・タイトルが分かりにくいので改善
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
1
|
+
Unity2D C♯ Quaternionを用いた自機狙いについて
|
body
CHANGED
@@ -21,7 +21,7 @@
|
|
21
21
|
//自機狙い弾の生成
|
22
22
|
if(frame%50==0 && target!=null)
|
23
23
|
{
|
24
|
-
|
24
|
+
Quaternion homingRotate = Quaternion.LookRotation(target.transform.position - transform.position);
|
25
25
|
Instantiate(bullet2, transform.position, homingRotate);
|
26
26
|
}
|
27
27
|
|
@@ -47,4 +47,4 @@
|
|
47
47
|
ここに書いたソースコード以外にもLookAtを用いたり弾とプレイヤーをむすぶベクトルを用いたりして自機狙いを作ろうとしてみましたが、いずれもエラーはないものの弾が生成されなかったり生成されてもなぜか真上に飛んでしまったりとうまくいきませんでした。
|
48
48
|
###その他
|
49
49
|
Unityのバージョンは5.5.1です。
|
50
|
-
弾の生成に関してはInstantiateを使う方法のみ知っています。もし他にもっと良い方法があるよという方がいらっしゃればご
|
50
|
+
弾の生成に関してはInstantiateを使う方法のみ知っています。もし他にもっと良い方法があるよという方がいらっしゃればご教授していただけると嬉しいです。よろしくお願いします。
|