ImagesCollide
Übersicht

sandy2143Betreff: ImagesCollide |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also... ich soll für Informatik ein Spiel programmieren...
ich möchte ein Shooterspiel machen, bei dem sich 2 Menschen beschiessen... ich hab für beide einen Type erstellt, damit die schiessen können... Nur mein Problem ist, das wenn die Schüsse auf gleicher Höhe sind dann sollen die zusammmenstoßen und verschwinden... Ich hab schon viel ausprobiert... es klappt gar nichts... Bitte helft mir... Danke! |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ohne Code nichts los... | ||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
sandy2143 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wie ohne code? | ||
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zeig mal deinen Code ![]() |
||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also du hast eine Schuss geschwindigkeit f. Um diese (Pixel-)Zahl wird der Schuss pro Frame verschoben, z.B. f = 3, jeder Schuss wird um 3 Pixel / Frame verschoben (+/- entscheidet die richtung). Jetzt Ziehst du nur noch ein Rect um die Schüsse (Nur Virtuell) und zwar mit RectsOverlap. Damit prüft man zwei Rechtecke auf Kollision. Jetzt musst du nur folgendes machen (erstes Rechteck = von links nach recht, zweites = von rechts nach links)
Code: [AUSKLAPPEN] If RectsOverlap(s1x,s1y,s1w+f,s1h,s2x-f,s2y,s2w+f,s2h) then
;Löschen Endif So jetzt nur noch die Variablen für deine Werte einsetzen -Fertig mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
sandy2143 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok...
meine types: Type schuss Field x Field y End Type Type schusss Field s Field t End Type dann hab ich die bilder zu den Schüssen hochgeladen.... For a=Each schuss DrawImage celli,a\x,a\y Next For a=Each schuss a\x=a\x-4 Next For b=Each schusss DrawImage sons,b\s,b\t Next For b=Each schusss b\s=b\s+4 Next For b=Each schusss DrawImage sons,b\s,b\t,0 Next das is dafür das das weggeht... aber das funktioniert nicht.. If ImagesCollide(sons,s,t,0,celli,x,y,0) DrawImage sons,600,600,0 DrawImage celli,600,600,0 EndIf |
||
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mach den Code in Codeboxen, diese Dinger hier:
Code: [AUSKLAPPEN] [code]Mein Code[/code]
Ich würde dir Raten, dass du dir noch mal ein Tutorial zu Types anschaust. |
||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
sandy2143 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok danke...
wie komm ich denn dahin? ![]() |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Gewöhne dir besser gleich eindeutige Bezeichnungen an...
schuss -> Tschuss1 schusss -> Tschuss2 Zusätzliche Buchstaben irgendwo an zu hängen ist schnell gemacht und genauso schnell übersehen... Code: [AUSKLAPPEN] For a=Each schuss
DrawImage celli,a\x,a\y Next For a=Each schuss a\x=a\x-4 Next Hier verdoppelst du die Schleife... wozu? Du kannst innerhalb der For...Each Schleife beides hintereinander machen. Code: [AUSKLAPPEN] ImagesCollide(sons,s,t,0,celli,x,y,0) Das Bild ist ja richtig, aber was sollen s, t, x und y sein? Da müssen doch die Koordinaten der Schüsse hin, oder?
also a\x, a\y und b\x, b\y - das noch in zwei For...each Schleifen die alle Schüsse mit jedem anderen auf Kollision prüfen... |
||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Hangman |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hatte zwar leider keine Zeit mir das genauer anzugucken aber um auf deine Frage zu antworten: Normalerweise funktioniert so eine Schusskollision mit Types:
Code: [AUSKLAPPEN] For Schuss1.Schuss1 = Each Schuss1 For Schuss2.Schuss2 = Each Schuss2 If Imagesoverlap(Schuss1\Bild,Schuss1\X,Schuss1\Y,Schuss2\Bild,Schuss2\X,Schuss2\Y) Then Delete Schuss1 Delete Schuss2 Exit End If Next Next |
||
Ich habe Berthold gebrochen. |
- Zuletzt bearbeitet von Hangman am Fr, Dez 11, 2009 14:45, insgesamt einmal bearbeitet
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das gibt 100%ig ein MAV.
Schuss1 hat dann den Inhalt NULL und der Zugriff darauf ist illegal... Dafür benutze ich immer Variablen die anzeigen, dass etwas vernichtet werden kann. |
||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
In diesem Fall könnte ein Exit![]() |
||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
![]() |
das wurgel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es wird trotzdem nicht funktionieren, da an ImagesOverlap ein Parameter zuviel übergeben wird.
Zitat: Code: [AUSKLAPPEN]
If Imagesoverlap(Schuss1\Bild,Schuss1\X,Schuss1\Y, -->Schuss2<-- ,Schuss2\Bild,Schuss2\X,Schuss2\Y) Then Außerdem würde ich RectsOverlap verwenden und die Schussgeschwindigkeit mit einberechnen, da die Schüsse bei hoher Geschwindigkeit sonst durch sich durch fliegen könnten, ohne zu kollidieren. Code: [AUSKLAPPEN] For Schuss1.Schuss1 = Each Schuss1 For Schuss2.Schuss2 = Each Schuss2 If RectsOverlap(Schuss1\X,Schuss1\Y,Schuss1\W+Schuss1\XSpeed,Schuss1\H+Schuss1\YSpeed, Schuss2\X,Schuss2\Y,Schuss2\W+Schuss2\XSpeed,Schuss2\H+Schuss2\YSpeed) Then Delete Schuss1 Delete Schuss2 Exit End If Next Next |
||
1 ist ungefähr 3 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group