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

Dezibell

Frischling

  • »Dezibell« ist der Autor dieses Themas

Beiträge: 58

Wohnort: Kleve nrw

  • Private Nachricht senden

1

19.07.2006, 22:49

brauche tipps zum dart-spiel

hallo zusammen !

ich progge gerade an einem kleinen dart-spiel, und frage mich wie ihr es wohl machen würdet. Die dart-scheibe hat bekanntlich mehrer felder. 62 stück um genau zu sein. nun schmeisse ich den pfeil und er bleibt in der scheibe hängen. wie soll ich die kollisionserkennung nun implementieren?
es muss ja ausgeweretet werden welches feld getroffen wird, damit die richtige punktezahl vergeben werden kann.

Ich dachte daran, beim modellieren der scheibe im cinema4d gleich jedem feld eine eigene selektion zu verpassen und diese mit zu exportieren. damit wäre ich in der lage zu testen welches polygon zu dem entsprechendem feld gehört und kann entsprechend darauf reagieren.

was sagt ihr?

Dezi sagt THX!
DeziBell
ICQ - 219 012 102
ICQ NAME - Stone

big_muff

Alter Hase

Beiträge: 460

Wohnort: Schweiz

Beruf: Informatikstudent (4. Semester)

  • Private Nachricht senden

2

19.07.2006, 22:55

Also ich würde das folgendermassen machen:

Kollision der Wurflinie (oder Kurve oder was auch immer) mit der Dartscheibenebene berechnen.

Dann den Abstand des Kollisionspunktes vom Mittelpunkt der Dartscheibe berechnen (Radius)
Und den Winkel, den der Kollisionspunkt auf der Dartscheibe ausmacht berechnen (Stell dir die Dartscheibe einfach als Einheitskreis vor!).

Je nach Winkel hast du dann einen Wert getroffen und je nach Radius vervielfacht sich dieser Wert dann oder wird 25 oder 50.

Fertig!
Nur Idioten halten Ordnung, ein Genie beherrscht das Chaos.[size=7]

[/size]HardFate - Ein Start, Ein Ziel, Viele Wege[size=7]

[/size]Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.

Dezibell

Frischling

  • »Dezibell« ist der Autor dieses Themas

Beiträge: 58

Wohnort: Kleve nrw

  • Private Nachricht senden

3

19.07.2006, 23:01

das klingt auch nicht schlecht und verbraucht weniger speicher... danke big_muff ! werde mich gleich mal dransetzen es umzusetzten :)
DeziBell
ICQ - 219 012 102
ICQ NAME - Stone

4

19.07.2006, 23:05

naja, wärs OpenGL könnteste auch über "picking" gehen , da kannste praktisch die koordinaten des cursors angeben, und der liefert dir die angeklickten polygone...
aber ich denk ma, du proggst in dx, da wirds sowas wohl nich geben

Dezibell

Frischling

  • »Dezibell« ist der Autor dieses Themas

Beiträge: 58

Wohnort: Kleve nrw

  • Private Nachricht senden

5

19.07.2006, 23:13

ich benutze dx9. picking fällt dann wohl flach. aber die idee mit dem radius und winkel reicht vollkommen. bin nur leider nicht selbst drauf gekommen. liegt wohl an den heissen temperaturen. kann nicht mehr klar denken mit nem gebratenem spiegelei im kopf! :)
DeziBell
ICQ - 219 012 102
ICQ NAME - Stone

Dezibell

Frischling

  • »Dezibell« ist der Autor dieses Themas

Beiträge: 58

Wohnort: Kleve nrw

  • Private Nachricht senden

6

25.07.2006, 01:45

Da bin ich wieder !

Nun... ich habe ein Problem bei der Drehung des Dart-Pfeils während des Fluges. Mit folgender Code-Schnipsel berechne ich die Abwurf-Richtung:

Quellcode

1
2
3
Eigenverschiebung.x = velocity*cosf(Anstellwinkel)*sinf(Schwenkwinkel);
Eigenverschiebung.y = velocity*sinf(Anstellwinkel);
Eigenverschiebung.z = velocity*cosf(Anstellwinkel)*cosf(Schwenkwinkel);

Nun berechne ich noch die Gravitation hinzu:

Quellcode

1
2
if(Eigenverschiebung.y < y_velocity_Max)
      Eigenverschiebung.y -=g*FrameTime;

Ich hoffe das waren die wichtigsten Informationen um aufzuzeigen welchen Weg ich eingeschlagen habe (Markt und Technik - dx9 in 21 Tagen). Der Dart-Pfeil soll mit der Spitze immer der Wurflinie folgen. Die berechnung der Wurflinie funktioniert auch bestens, aber wie berechne ich denn nun die Rotation die der Dart-Pfeil an beliebiger Position hat?
Vielleicht kann mir jemand ein paar Tipps oder nen guten Link dazu Posten!!

THX!
DeziBell
ICQ - 219 012 102
ICQ NAME - Stone

Dezibell

Frischling

  • »Dezibell« ist der Autor dieses Themas

Beiträge: 58

Wohnort: Kleve nrw

  • Private Nachricht senden

7

25.07.2006, 02:12

Also ich habe mir was überlegt...
Kann ich den Neigungswinkel des Dart-Pfeils während des Flugs nicht so berechnen???

1. Vorherige Position des Pfeils Speichern
2. Aktuelle Position des Pfeils speichern
3. Beide Positionen normieren
4. Punktprodukt bilden

Habe ich jetzt den Winkel in Rad? Oder ist das alles Quatsch :)
DeziBell
ICQ - 219 012 102
ICQ NAME - Stone

Chase

Alter Hase

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

8

25.07.2006, 02:12

Ich nehme an "Eigenverschiebung" ist die aktuelle Position des Pfeiles. Und Rotation ist ja eigentlich nichts anderes als die Bewegungsrichtung: Also ein erster Ansatz waere die aktuelle Position von der voherigen Position (die du dann auch speichern musst) abzuziehen, zu normalisieren und diesen Vektor als Rotation einzusetzen. Normalerweise ist das bei der Flugbahn eines Dartpfeils nur eine einzige Koordinate. Du kannst ja noch manuell eine Drehung um die eigene Achse hinzufuegen, die du VOR der Ausrichtung des Pfeils an der Flugbahn vornimmst.
Edit: Oh warst schneller :)
2. Edit:
Was du da machst versteh ich nicht, du willst Positionsvektoren normalisieren? Wenn du nur den Winkel in RAD haben willst :

Quellcode

1
winkel = atan( (aktuellePos.y - altePos.y) / (aktuellePos.x - altePos.x));
"Have you tried turning it off and on again?"

Dezibell

Frischling

  • »Dezibell« ist der Autor dieses Themas

Beiträge: 58

Wohnort: Kleve nrw

  • Private Nachricht senden

9

25.07.2006, 02:19

tja ... manches erledigt sich beim schreiben glücklicherweise von selbst :) hätte aber nicht gedacht das ich heute noch antwort krieg :)

also.. danke trotdem chase :)
DeziBell
ICQ - 219 012 102
ICQ NAME - Stone

10

30.07.2006, 16:37

@WarMuuh!!
"Picking" ist auch in DirectX zu "realisieren" ;)
www.google.de => "Picking Ray" => http://www.mvps.org/directx/articles/improved_ray_picking.htm
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Werbeanzeige