Schuss Aufprall-Ort (Schnittpunkt)
Übersicht

![]() |
IguanBetreff: Schuss Aufprall-Ort (Schnittpunkt) |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallöchen leute!
Ich bin jetzt schon eine Weile am gleichen Problem: Ich habe einen Schuss in einem Type. Den bewege ich so: Code: [AUSKLAPPEN] Schuss\X# = Schuss\X# - Sin(Schuss\IstWinkel#) * Schuss\Geschw# Schuss\Y# = Schuss\Y# - Cos(Schuss\IstWinkel#) * Schuss\Geschw# die Hindernisse, wo der Schuss aufschlagen kann sind in meinem Spiel alles Rechtecke. Nun bräuchte ich die genauen Koordinaten, wo der Schuss auf dem Rechteck aufschlägt. Problem: Der Schuss kann eine Geschwindigkeit von über 20 Pixel pro Durchlauf haben; somit fällt die Methode aus, einfach mit ImageRectCollide auf Kollisionen zu prüfen, und dann die Schuss-Koordinaten "merken", weil so dünne Rechtecke einfach "durchschossen" werden. Ich habe hier im Forum mal die Function LineRectIntersect gefunden, aber bin irgendwie damit nicht weiter gekommen... ![]() kennt ihr mein Problem? Könnt ihr mir helfen? vielen Dank schon im voraus!! Iguan [/syntax] |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Anhand der Start- und End-Koordinaten deines Schusses in jedem Schleifendurchlauf lässt sich die Steigung der Flugbahn berechnen (siehe Geradengleichung).
Daraus lässt sich der Schnittpunkt ermitteln. Da du eh in Types speicherst könntest du alternativ auch die Steigung in einem Field gespeichert halten. (Achtung, Sonderfälle! Senkrechte Flugbahnen haben keine definierte Steigung, da hier einfach die x für alle y konstant bleibt.) alternativ könntest du natürlich auch eine Tabelle mit den Steigungen für jeden Winkel anlegen. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Iguan |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke für deine schnelle Antwort!
Auf diese Weise habe ich es bereits versucht, bin aber wegen meinem schlechten Mathe-Wissen gescheitert! bisher habe ich folgendes: Code: [AUSKLAPPEN] Graphics 640,480,32,2 L1X# = 30 L1Y# = 40 L2X# = 580 L2Y# = 300 RBreite = 50 RHoehe = 80 SetBuffer BackBuffer() Repeat m# = (L2Y#-L1Y#)/(L2X#-L1X#) b# = L1Y# - m# * L1X# x# = (MouseY()-b#)/m# y# = m# * MouseX() + b# Cls Color 255,255,255 Line L1X,L1Y,L2X,L2Y Color 255,255,0 Rect MouseX(),MouseY(),RBreite, RHoehe Color 0,255,0 Line 0,Y#,640,Y# Line X#,0,X#,480 Text 10,10,"m = " + m# Flip Until KeyHit(1) vielleicht kannst du mir Nachhilfestunden in Mathe geben ![]() damit ich den genauen Schnittpunkt habe? |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group