2016-04-04 10 views
0

私の弾丸が発砲し続ける 弾丸を次のように実装しましたが、ちょうど上に上がったようですが、どうしましたか?私の弾丸が上昇し続ける

public class Player1Controls : MonoBehaviour { 

// Update is called once per frame 
public float speed; 
Rigidbody2D player; 
public float health; 
private int state; 
public Rigidbody2D Bullet; 
public GameObject Gun; 
void Start() 
{ 
    player = GetComponent<Rigidbody2D>(); 
} 
void Update() 
{ 
    if (Input.GetKeyDown(KeyCode.Space)) 
    { 
    Rigidbody2D bullet1 = (Rigidbody2D)Instantiate (Bullet, Gun.transform.position,Quaternion.identity); 
} 
if(Input.GetKey(KeyCode.W)) 
{ 
    //transform.Translate(Vector2.up * speed); 
    player.velocity =(Vector2.up*speed); 
    state = 1; 
} 

パブリッククラスMoveBullet:MonoBehaviour {

public float speed; 
// Update is called once per frame 
void Update() { 
    Vector3 pos = transform.position; 
    Vector3 vel = new Vector3(0, speed * Time.deltaTime, 0); 
    pos = pos + transform.rotation * vel; 
    transform.position = pos; 
} 
+0

y方向のみに速度を設定します。それはあなたのプレーヤーのベクトルに沿っている必要があります。 – schultz

答えて

0

は(武器が空を指しているかのように)あなたの弾丸が上向きに撮影しますか?それとも、目標が少し外れていて、弾丸がそれ以上に上がるのでしょうか?最初のケースの場合は、変数Vector3とvel2のy座標とz座標がカメラの座標と一致することを確認してください。その値は、XとZではゼロ、Yではゼロではない値です。スカイにZ軸が向いている(そしてY軸が画面を指し示している)ようにシーンを設定しても問題ありません。しかし、あなたのZが指し示している場合、画面から言ってあなたのYが空を指していると、それはあなたが見ている動作を引き起こします。

それが役立つかどうか教えてください。

+0

計画はいつも同じ方向、つまりYでまっすぐに撃つことですが、それが意味をなさないならストレートがまっすぐになるように弾丸を回転させるだけです。私が追加して削除したコードを編集しました。私が本当に知りたがっているのは、火の前に押されたキーに基づいてインスタンス化の3番目のプロパティの値をどうやって解決するかということです。回転変数を作成する方法がわからないということです –

1

ベクトル3にxとzを使用します。 yは上向きで、zは "前向き"(シーン内)

関連する問題