2016-04-04 13 views
0

mein Geschoss feuert weiter Ich habe eine Kugel in der folgenden Art und Weise implementiert, aber es scheint nur zu steigen, was habe ich falsch gemacht?Mein Geschoss geht weiter

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; 
} 

public class 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

Sie legen die Geschwindigkeit nur in y-Richtung fest. Es sollte entlang des Vektors Ihres Spielers sein. – schultz

Antwort

0

Ist Ihre Kugel nach oben gedreht (als ob die Waffe in den Himmel zeigt)? Oder ist das Ziel etwas falsch, und die Kugel endet höher als es sollte? Wenn Sie sich im ersten Fall befinden, vergewissern Sie sich, dass die y- und z-Koordinaten Ihrer Variablen Vector3 vel mit denen Ihrer Kamera übereinstimmen. Seine Werte sind Null für X und Z und ein Nicht-Null-Wert in Y. Dies ist möglicherweise in Ordnung, wenn Ihre Szene mit der Z-Achse nach oben zum Himmel ausgerichtet ist (und die Y-Achse in den Bildschirm zeigt). Aber wenn dein Z auf den Bildschirm zeigt und dein Y zum Himmel zeigt, würde das das Verhalten verursachen, das du siehst.

Lassen Sie mich wissen, wenn das hilft.

+0

Der Plan ist, immer in die gleiche Richtung zu schießen, gerade in das Y, aber nur die Kugel zu drehen, so dass die Straight die richtige Art von Straight ist, wenn das Sinn macht? Ich habe den Code zu dem hinzugefügt, was ich hinzugefügt und entfernt habe. Was ich wirklich wissen möchte, ist, wie man den Wert für die 3. Eigenschaft des Instantiates basierend auf dem vor dem Feuer gedrückten Schlüssel berechnet, was es noch schlimmer macht, dass ich nicht einmal weiß, wie man eine Rotationsvariable erstellt –

1

Verwenden Sie x und z auf dem Vektor3. in der Einheit y ist aufwärts, während z "vorwärts" ist (in die Szene)