Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

MrZylox1998

Treue Seele

  • »MrZylox1998« ist der Autor dieses Themas

Beiträge: 186

Wohnort: Bayern

Beruf: Schüler(9.Klasse)

  • Private Nachricht senden

1

13.08.2012, 19:45

C# - Schüsse coden und animieren

Guten Tag zusammen,
Ich habe mich entschieden, ersteinmal für ganz kleine 2d spiele Visual C#mit XNA zu nehmen.
Ich programmiere mit C#, um es mir mal ein wenig anzusehen.

Ja, die Grundlagen beherrsche ich, undzwar in beiden sprachen.

Nun habe ich ein klitze kleines Problem,
Ich habe anscheinen nicht genug vorstellungskraft, oder bin einfach dumm...
Wie bekomme ich einen schuss hin ?
Ich habe bereits laufen auf den tasten wasd, und will nun mit den pfeiltasten schiessen können.
(wenn ich pfeiltaste rechts drücke soll eine kugel nach rechts fliegen, undso weiter)
Aber wie setze ich das ganze um? ich habe mir viel gedanken gemacht, aber ich habe keine ahnung.

(das spiel ist in der vogelperspektive, also die steuerung stelle ich mir wie bei binding of isaac vor)

Ich bitte um Hilfe

MfG MrZylox
Jetzt -- ist schon vorbei.

Rechtschreibfehler sind Spezialeffekte meiner Tastatur!

2

13.08.2012, 19:49

Schussklasse erstellen:
- Konstruktor legt erste Position und Richtung fest
- Update-Methode bewegt den Schuss um X Pixel

Dann rufst in deiner Spielklasse einfach die Update-Methode der Schussklasse immer wieder auf und dein Schuss sollte sich bewegen. Wenn du mehrere Schüsse hast, erstell einfach eine Liste in deiner Spielklasse mit allen Schüssen und geh diese Liste jeden Frame durch und lass jeden Schuss zeichnen/updaten.

MrZylox1998

Treue Seele

  • »MrZylox1998« ist der Autor dieses Themas

Beiträge: 186

Wohnort: Bayern

Beruf: Schüler(9.Klasse)

  • Private Nachricht senden

3

13.08.2012, 19:53

Tut mir leid, ich kann damit nicht sehr viel anfangen,
Ich bin ziemlich neu, wenn jemand lust hat, bitte noch für vollidioten erklären,
und geht das mit keiner schleife, dass der schuss solang fliegt bis er was trifft oder sowtwas?
Jetzt -- ist schon vorbei.

Rechtschreibfehler sind Spezialeffekte meiner Tastatur!

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »MrZylox1998« (13.08.2012, 19:58)


DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

4

13.08.2012, 19:57

Schon mal was von Vektoren gehört?

MrZylox1998

Treue Seele

  • »MrZylox1998« ist der Autor dieses Themas

Beiträge: 186

Wohnort: Bayern

Beruf: Schüler(9.Klasse)

  • Private Nachricht senden

5

13.08.2012, 19:59

nein.
ich bin wie gesagt neu.
tut mir leid.^^
Jetzt -- ist schon vorbei.

Rechtschreibfehler sind Spezialeffekte meiner Tastatur!

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

6

13.08.2012, 20:09

Damit kannst du "Richtungen" angeben, stell dir einen Vektor als Pfeil vor. Der kann z.B. so aussehen:

vektor(1, 1)

Damit hättest du einen Vektor der in die Richtung x = 1 y = 1 zeigt. Das kannst du jetzt benutzen um deine Kugel zu verschieben. Heißt (kugel.position = (0|0)):

kugel.position+vector
= kugel.position.x+vektor.x, kugel.position.y+vektor.y

Und wenn du dann mit der Position zeichnest sollte sich deine Kugel sich jetzt bei 1|1 befinden. So machst du das dann über mehrere Frames und schon bewegt sich deine Kugel. Du kannst dir ja mal das angucken. Am besten schreibst du dir für Vektoren eine Klasse oder nimmst eine fertige (Google).
Man kann damit natürlich auch noch mehr machen (als Position benutzen anstatt Verschiebung, multiplizieren, subtrahieren, ...).

Etwas erweitert sehe das dann so aus:

Quellcode

1
2
3
4
5
6
7
Schuss.position = vec2(10, 10); // Spieler steht bei "10|10"
Schuss.richtung = vec2(1, 0); // Spieler schießt auf der x-Achse positiv (nach rechts)
Schuss.geschwindigkeit = 100; // Pixel pro Sekunde

update(){
    Schuss.position = Schuss.position+((Schuss.richtung*Schuss.geschwindigkeit)/fps); // durch fps damit man eine flüssige Bewegung bekommt
}

MrZylox1998

Treue Seele

  • »MrZylox1998« ist der Autor dieses Themas

Beiträge: 186

Wohnort: Bayern

Beruf: Schüler(9.Klasse)

  • Private Nachricht senden

7

13.08.2012, 20:14

Danke für deine Antwort,
ich werd es mal versuche, allerdings habe ich es nicht zu 100% verstanden, wie deklariere ich so einen vektor?

//edit: SCHWACHSINN ich sehs ja oben im quellcode >.<
Jetzt -- ist schon vorbei.

Rechtschreibfehler sind Spezialeffekte meiner Tastatur!

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

8

13.08.2012, 20:18

Das ist aber nur Pseudocode ;)
Aber da du C# nach eigenen Angaben kannst glaube ich wirst du das hinbekommen. Falls du nicht weiterkommst: http://pastebin.com/K49n4wUM Nicht wundern, das ist C++. Das lässt sich genauso als Klasse schreiben. Versuch aber bitte erst das Prinzip zu verstehen, es wird vieles einfacher machen.

MrZylox1998

Treue Seele

  • »MrZylox1998« ist der Autor dieses Themas

Beiträge: 186

Wohnort: Bayern

Beruf: Schüler(9.Klasse)

  • Private Nachricht senden

9

13.08.2012, 20:20

Ich habe jetz verstanden was ich machen muss,
aber wo muss ich das überall einfügen?

Ja ich kann C# einigermaßen (aber XNA nicht xD)
Jetzt -- ist schon vorbei.

Rechtschreibfehler sind Spezialeffekte meiner Tastatur!

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

10

13.08.2012, 20:23

Ah das ist für 3D, hier für 2D: http://pastebin.com/5kAw4Jnt

"Einfügen" sollst du das nirgendwo. Mach dir am besten eine neue C# Datei, nenn sie Vector und schreib eine Klasse rein die 2 floats hält (x, y). Dann kannst du dir ein paar Methoden schreiben um die ganzen Rechenoperationen auszuführen (ich weiß nicht ob man Operatoren (+, -, /, *, ...) in C# bei Klassen überladen/benutzen kann).

Werbeanzeige