2016-05-09 5 views
0

Ich bin nicht so gut mit Visual Studio.Verschieben von Player nach oben, halten Sie die linke Maustaste/Leertaste Microsoft VIsual Studio (Unity)

Ich mache ein einfaches Spiel und mein gameobject (Player) sollte nach oben gehen, wenn Space oder Left Mouse Button gedrückt wird.

Hier ist mein Code

using UnityEngine; 
using System.Collections; 

public class PixelMovement : MonoBehaviour { 

    Vector3 velocity = Vector3.zero; 
    public Vector3 PressVelocity; 
    public float maxSpeed = 5f; 
    public float fowardSpeed = 1f; 

    bool didPress = false; 

    // Use this for initialization 
    void Start() { 

    } 

    //Do Graphic & Input updates 
    void update() { 
     if(Input.GetKeyDown(KeyCode.Space) || Input.GetMouseButtonDown(0)) { 
      didPress = true; 
     } 
    } 

    //Do physics engine updates here 
    void FixedUpdate() { 
     velocity.x = fowardSpeed; 
     if (didPress == true){ 
      didPress = false; 
      velocity += PressVelocity; 
     } 

     velocity = Vector3.ClampMagnitude(velocity, maxSpeed); 
     transform.position += velocity * Time.deltaTime; 
    } 
} 

So, es ist wie im Gegensatz zu Schwerkraft bewegen sollte. Und wenn es aufhört zu halten, fällt es weiter. Ich habe bereits die Schwerkraft ich gerade brauche die "Up-Bewegung"

+0

Welches Verhalten sehen Sie? Haben Sie überprüft, welcher Code tatsächlich aufgerufen wird und welche Werte in den verschiedenen Phasen des erwarteten Programmablaufs vorhanden sind? Ohne zu sehen, ob Ihr Code würde sogar tun, was es sagt, ist Ihre 'update' Methode falsch benannt. Es sollte 'Update' sein - beachten Sie das Camel Gehäuse. – Knetic

+0

Haben Sie versucht, die Vorwärtsgeschwindigkeit zu erhöhen? – jitendragarg

+0

Ich brauche etwas wie Flappy Bird, aber jetzt mit Springen, aber mit fliegen (Platz halten - in Bewegung) – pHenomen

Antwort

0
//Do Graphic & Input updates 
void update() { 
    if(Input.GetKeyDown(KeyCode.Space) || Input.GetMouseButtonDown(0)) { 
     didPress = true; 
    } 
} 

ich glaube, das Problem ist, weil update() sein sollte Update()

Versuchen:

//Do Graphic & Input updates 
void Update() { 
    if(Input.GetKeyDown(KeyCode.Space) || Input.GetMouseButtonDown(0)) { 
     didPress = true; 
    } 
} 
0

Dies ist eine schnelle Lösung: Sie‘ Rufen Sie Input.GetKeyDown() und Input.GetMouseButtonDown() auf, die True nur für das erste Bild zurückgeben, auf dem die Schaltfläche gedrückt wird.

Wenn Sie ein sich wiederholendes Ereignis wollen (das heißt, die Maustaste oder Raum ist gehalten nach unten), verwenden Input.GetKey (KeyCode.Space) und Input.GetMouseButton (0).

+0

Ich versuchte dies und ich habe Probleme mit float .. wenn ich Platz halte es langsam meine Hintergrundbewegung (backgorund bewegt sich langsamer) Ich brauche etwas wie vielleicht flappy bird, aber nicht mit Springen, sondern mit fliegenden (Halteplatz bewegt sich) – pHenomen

+0

Also reparierte ich mein langsames Hintergrundproblem 'velocity + = PressVelocity * Time.deltaTime;' Aber es ist nur Springen nicht fliegen – pHenomen