2016-12-06 15 views
1

私はトップダウンの2Dゲームを作成しています。ここに私のプレイヤーが弾丸をインスタンス化するコードは次のとおりです。弾丸を回転方向に移動する

public GameObject bullet; 
void Update() 
    { 
     if (Input.GetButton("Fire1") && Time.time > nextFire) 
     { 
      nextFire = Time.time + fireRate; 
      Instantiate(bullet, transform.position, transform.rotation); 
     } 
    } 

ここでそれを移動するために箇条書きに添付スクリプトさ:

void Update() 
    { 
     transform.Translate(transform.forward * Time.deltaTime * speed); 
    } 

弾丸が唯一のZ軸方向に移動することが表示されます2Dのゲームでは、それが静止しているかのように見えます。それを修正するには?

+0

transform.forward以外の方向を試しましたか? – Maakep

+0

代わりに 'transform.right'を使ってローカルのx軸に沿って移動するのはどうですか? – Serlite

答えて

2

Vector3.forwardは、新しいVector3(0、0、1)を実行する場合と同じです。つまり、z軸で正の値になります。あなたのカメラの設定を表すものを下から選んでください。

  • バックのVector3(0、0、-1)を書き込むための短縮形:ここ

    はするVector3型から静的ヘルパーのリストです。

  • down Vector3(0、-1、0)を書き込むための略記。
  • forward Vector3(0、0、1)を書き込むための略記。
  • left Vector3(-1、0、0)を書き込むための略記。
  • 1 Vector3(1、1、1)を書き込むための略記。
  • 右Vector3(1,0,0)を書き込むための省略表現。
  • up Vector3(0、1、0)を書き込むための略記。
  • ゼロVector3(0、0、0)を書き込むための略記。

以下のコメントを編集:トランスフォーム

はあなたのゲームオブジェクトの位置、回転、およびスケールです。 translateメソッドを使用する場合、Vector3を使用して方向を変えてGameObjectの位置を移動します(場合によってはフレーム間のdeltaTimeに合わせる)ので、向きに応じて(X/Y/Z軸上に表示されます)カメラのGameObjectはワールド空間に相対的であり(一般的に、relativeToが調整されない限り)、特定の軸を全体として持つため、GameObjectはその空間に対して相対的に移動する必要があります。

このように考えると、あなたは机の上に座っており、机は世界の空間であり、あなたの視点から見ることができるのは3次元です。あなたは左右(x軸)、上下(y軸)、そしてあなたの視点から前方(z軸)を見ることができます。ペーパークリップを前方に移動させたい場合は、Z軸を下にして立っているのでVector3.upになりますが、テーブルを立てて見下ろすと(カメラがワールドスペースを上回った場合など)、紙を作るためにクリップを前方(上)に移動すると、Vector3.forwardが使用されます。

私はあなたのシーンが任意に配置されている可能性があるため、何を指定したのかを明記しました。

+0

"transform"を "Vector3" +に変更する必要がありました。私は "変換"と "ベクトル3"の違いを理解していません。 – Abdou023

+0

これは実際に非常に役に立ちます。ありがとう。 – Abdou023

関連する問題