2012-04-07 6 views
1

Ich versuche, eine einfache Anwendung zu erstellen, wirklich einfach.C# XNA Bewegung funktioniert nicht, kann nicht verstehen, warum

Ich weiß nicht warum, aber wenn ich auf den linken Pfeil oder den rechten Pfeil klicke, ändert die Textur ihre Position nicht.

Ich bin sicher, dass ich etwas vermisse, kann nicht was, werde dumm aussehen.

Hauptdatei: http://paste.ubuntu.com/919662/

Character.cs: http://paste.ubuntu.com/919664/

Position.cs: http://paste.ubuntu.com/919665/

Vielen Dank.

Antwort

3

AKTUALISIERT ANTWORT:

Der wahre Schuldige ist:

KeyboardState Keyboard = new KeyboardState();

Sie können "Keyboard" nicht als Variablennamen verwenden. Es ist eine Klasse von XNA! Sie deklarieren es neu. Daher werden Ihre Tastendrücke nicht mehr erkannt! Verwenden Sie stattdessen:

KeyboardState keyb = Keyboard.GetState(); 

und aktualisieren Sie Ihre Referenzen

Diese Antwort ist etwas gilt:

Sie Character initialisieren

 C = new Character(100, 100, new Position(200, 200)); 

Aber dann in Ihrem Update() Methode, die Sie tun :

 spriteBatch.Draw(myTexture, myVector, Color.White); 

Sie ändern den Wert von Pos in der Zeichenklasse ordnungsgemäß, aber dies steht in keinem Zusammenhang mit myTexture. In der Tat, du zeichnest überhaupt nicht "Charakter" auf dem Bildschirm.

TL; DR: Sie verbessern die Klasse "Character", aber Sie zeichnen myTexture. Sie ändern die Koordinaten für das Objekt, das myTexture und nicht für Character enthält.

Außerdem, wenn Sie "Zeichen" auf dem Bildschirm zeichnen möchten, wäre der beste Weg, einfach Vector2D statt Ihrer eigenen Pos-Klasse zu verwenden.

Eine weitere Sache:

In Loadcontent sind Sie

tun
 myVector = new Vector2(C.Pos.Col, C.Pos.Row); 

Aber die Dokumentation eindeutig fest: /// Loadcontent wird einmal pro Spiel aufgerufen werden und ist der Ort, zu laden /// all deine Inhalte.

Das sollte Ihnen helfen, wie Sie es reparieren. Wenn Sie noch Fragen haben, schreiben Sie einfach einen Kommentar unter meiner Antwort.

+0

Vielen Dank für Ihre Hilfe, es funktioniert jetzt. Ich habe gerade mit XNA angefangen und die Konzepte gelernt. Nochmals vielen Dank. – Novak

Verwandte Themen