2d collisions problem

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

sili95

Betreff: 2d collisions problem

BeitragFr, Jul 17, 2009 20:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo
ich habe ein problem bei der 2d kollision. entweder ist das so kompliziert oder ich zu Dumm. also ich hab mich ziehmlich lange in allen möglichen toturials und foren und der bb-hilfe umgesehen aber irgendwie verstehe ich es nicht. Hier so wie ich es denke müsste es gehen:

If ImagesCollide (auto,autox,autoy,0,pfosten,pfostenx,pfosteny,0) Then Print "crash!!"

hoffentlich kann mir jemand helfen
bitte ich bin voll anfänger Confused

The_Nici

BeitragFr, Jul 17, 2009 20:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, stimmt so.
wo liegt das problem?

Xeres

Moderator

BeitragFr, Jul 17, 2009 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Sieht prinzipiell richtig aus. Du könntest auch Stop oder Runtimeerror verwenden um zu sehen, ob die Kollision ausgelöst wird.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

sili95

BeitragFr, Jul 17, 2009 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir steht einfach egal wo ich das Auto hinbewege crash!!

sili95 Confused

ozzi789

BeitragFr, Jul 17, 2009 21:12
Antworten mit Zitat
Benutzer-Profile anzeigen
In demfall ist postenx = autox & posteny = autoy

post mal ein wenig mehr code, kann (noch) nicht hellsehen Smile
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

sili95

BeitragFr, Jul 17, 2009 21:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Graphics 640,480
SetBuffer BackBuffer()
Global ground = LoadImage("C:\Dokumente und Einstellungen\Silvan\Desktop\das Game\land.bmp")
Global pfosten=LoadImage("C:\Dokumente und Einstellungen\Silvan\Desktop\das Game\pfosten.bmp")
Global auto= LoadImage ("C:\Dokumente und Einstellungen\Silvan\Desktop\das Game\auto.bmp")

x=100
y=100

Repeat
Cls
DrawImage ground ,1,0,0
DrawImage pfosten,180,100,0


DrawImage auto,x,y
If KeyDown(203) Then x=x-2
If KeyDown(205) Then x=x+2
If KeyDown (200) Then y=y-2
If KeyDown (208) Then y=y+2
If ImagesCollide (auto,autox,autoy,0,pfosten,pfostenx,pfosteny,0) Then Print "crash!!"

Flip
Until KeyDown(1)

----------------------------------

vieleicht habe ich auch irgendwo anderst ein fehler gemacht
eben habe erst angefangen Confused

(das man x und y als variabeln setzten muss hab ich aus einem toturial)

Der Eisvogel

BeitragFr, Jul 17, 2009 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
die Variablen autox/y und pfostenx/y sind alle 0, da du ihnen nirgends einen wert zu gewiesen hast.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Xeres

Moderator

BeitragFr, Jul 17, 2009 21:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Bitte Codeboxen benutzen.
und ja: Da du die Variablen einfach einsetzt, werden sie von BB einfach = 0 gesetzt, damit liegen beide Bilder oben links und kollidieren entsprechend... änder die werte von autox/y oder pfostenx/y.
Wo du das auto zeichnest ist vollkommen egal, wenn du diese Koordinaten nicht auch zum kollisions-check benutzt.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

ozzi789

BeitragFr, Jul 17, 2009 21:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du erst gerade angefangen hast, versuch dich nicht gleich mit solchen Sachen, hat alles seine Zeit Wink

Du veränderst zwar X und Y aber nicht die Variable vom Auto (autox/autoy)
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

sili95

BeitragFr, Jul 17, 2009 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
muss ich dann so?
z.b.
global autox= 100
global autoy=120 oder so und das mit pfosten xy auch machen

also eigentlich bin ich schon recht lange dran hab aber schon ein paar mal aufgegeben wegen diesem kollisionszeugs

(was für Boxen?) Confused

sili95

BeitragFr, Jul 17, 2009 21:35
Antworten mit Zitat
Benutzer-Profile anzeigen
oder Bessere Frage wie kann ich machen dass z.b. das Auto einfach mit dem pfosten kollidiert?
wenn man das auto an Mausposition dann weiss ichs wies geht weil man weiss wo auto ist aber so weiss man ja nicht genau wo es sich befindet. Könnte man nicht irgendwie die autokoordinaten ermitteln oder so was??

ich beiss mir da drann noch die zähne aus grhhr Evil or Very Mad

Duempel

BeitragFr, Jul 17, 2009 21:49
Antworten mit Zitat
Benutzer-Profile anzeigen
sili95 hat Folgendes geschrieben:
weil man weiss wo auto ist aber so weiss man ja nicht genau wo es sich befindet.

Laut deinem Code befindet sich das Auto an der X-Koordinate "x" und der Y-Koordinate "y".
Da du die Variablen autox und autoy nicht definierst musst du bei der Kollisionsabfrage anstatt autox und autoy einfach nur x und y verwenden.
Und bei dem Pfosten ist es der selbe Fehler.
Du hast pfostenx und pfosteny nicht definiert. Du musst den Variablen vorher noch einen Wert geben. In deinem Fall wäre es dann:
Code: [AUSKLAPPEN]
pfostenx = 180
pfosteny = 100

Oder du setzt diese Werte direkt in die Kollisionsabfrage:
Code: [AUSKLAPPEN]
If ImagesCollide (auto,x,y,0,pfosten,180,100,0)


Ich hoffe ich konnte dir helfen.

Jan

sili95

BeitragFr, Jul 17, 2009 21:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja jetz habe ichs endlich kapiert Very Happy Very Happy Very Happy Very Happy Very Happy Very Happy Very Happy Very Happy
vielen dank Jan
Cool
 

SiSoFlo

BeitragSa, Jul 18, 2009 12:45
Antworten mit Zitat
Benutzer-Profile anzeigen
und jetzt noch die zwei unwichtigen Dinge:

Arrow Zitat:
(was für Boxen?)


Quellcodetext markieren und oben auf "Code" klicken
um den Code kommt in eckigen Klammern code ..... /code

das sieht dann so aus:
Code: [AUSKLAPPEN]
Print "Mein code"
;code
;code

wurde aber schon behandelt!
Arrow keine Doppelposts, danke


mfG FLori
So wie ihr von anderen Menschen behandelt werden wollt so behandelt sie auch!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group