Deutsch
Forum

SetBackAutoCollision

 
Hallöchen
SetBackAutoCollision wäre ja eine feine Sache, wenn ich dahintersteigen würde.
Ich hab eine Maske erstellt, welche die begehbaren Flächen schwarz beinhaltet.
Nun habe ich mit
string bereich#,0=RES/L1NEG.BMP
backgroundneg&=LoadExtImage(bereich#)

CopyExtBmp(%HDC,50,50,800,500,background&,0,0,0)
> background& hier sonst wird ja die Maske angezeigt <

diese doch im Speicher. (Das Original wird ja angezeigt)
wenn ich dann
SetBackAutoCollision (sprites&,backgroundneg&,1,0,0,GetBmpWidth(backgroundneg&),GetBmpHeight(backgroundneg&),0,0,0,0)
nehme, wird zwar wie gewünscht an Mauern u.s.w angehalten - aber nicht immer und korrekt - Figur läuft trotz WEIS aus dem Spielbereich raus.
Was könnte ich falsch machen?
Danke im Vorraus
Rolf
 
20.04.2004  
 



Hallo Rolf,

das kann ich dir so nicht beantworten, dazu müßte ich deinen Code testen.
Kann sein, das die weißen Flächen nicht breit benug sind ? Die müßen natürlich etwas breiter sein, als wie sich die Figur bewegt. Z.B. die Figur bewegt sich mit Geschwindigkeit 6, dann muß die weiße Abgrenzung mindestens 7 Pixel breit/hoch sein, ansonsten kann es bei der Kollisionsprüfung passieren, das das Sprite durch die Wand läuft...

Wenn du mir den Code + Grafiken schickst, werde ich es gerne testen.

Schönes Restwochenende,
Frank
 
20.04.2004  
 



Ich versuchs mal weiter - Code evtl später.
Aber ich habe nun die Maske nach rechts und nach unten (also nur das schwarze - ist eine größere Fläche und das weise auch groß genug!)verschoben und siehe da: Nun klappt es fast einwandfrei. Komisch?
Bedeutet vorher hat sich die Maske genau mit dem Original gedeckt und nun verschiebt sich die Maske nach rechts unten und es klappt.
Rolf
 
20.04.2004  
 



Hi,

ich hoffe ja, das deine Maskenbitmap die gleiche Größe besitzt, wie dein Hintergrund, oder ? Ansonsten kann ich mir solche Verschiebungen nämlich nicht erklären.
Grade SetBackAutoCollision() habe ich mit großer Sorgfalt getestet... )

Gruß, Frank
 
20.04.2004  
 



Hi Frank - ich schwöre
Ja die Maske entspricht haargenau dem Original.
Die Maske habe ich ja aus dem Original erstellt. Also alles Schwarz was begehbar sein soll und alles weis, was nicht.
Habs mit bmp, gif und jpg getestet und nun sogar ein anderes Bild erstellt - genau dasselbe.
Es kommt mir vor, als wenn die Maske im Speicher irgendwie verschoben ist - denn wenn ich laufe, dann ist z.B. ein Baum an einer anderen Stelle.
Rolf
 
20.04.2004  
 



Ok hab noch mehr rausgefunden:
Es klappt pixelgenau mit
CopyExtBmp(%HDC,0,0,%maxx,%maxy,background&,0,0,0)
- also wenn ich den ganzen Bildschirm kopiere
mit
CopyExtBmp(%HDC,0,800,500,background&,0,0,0)
- dort bekomme ich diesen Verschiebeffekt.
Aber so - genial - habe einen Baum per Weis genau gefüllt und die Figur hält wirklich an den Pixeln an - STARK damit haste wirklich viel viel Arbeit an Coden erspart.
Rolf
 
20.04.2004  
 



Hi !

Wie breit ist denn die Maskenbitmap? Wirklich 800x500?
Poste mal bitte, wie du die Bilder lädst oder die HDCs generierst.

Beim Kopieren ist am sichersten immer:

CopyExtBmp(%HDC,0,0,GetBmpWidth(background&),GetBmpHeight(background&),background&,0,0,0)
CopyExtBmp(%HDC2,0,0,GetBmpWidth(background&),GetBmpHeight(background&),background&,0,0,0)

Am besten schickst du mir mal dein Werk und ich werds vertraulich testen...

Gruß, Frank
 
20.04.2004  
 



He, hab gerade noch was entdeckt. Da fehlt ein Parameter !!!

CopyExtBmp(%HDC,0,800,500,background&,0,0,0)

-> muß aber heißen...

CopyExtBmp(%HDC,0,0,800,500,background&,0,0,0)

Wars das ?

Gruß, Frank
 
20.04.2004  
 



Nee Sorry, das war einfach nur ein Kopierfehler hier innerhalb dieses Forums (beim Posten) - habs einfach falsch geändert.
Aber wie gesagt mit %maxx und %Maxy klappts einwandfrei.
Rolf
 
20.04.2004  
 



Hallo Frank und Rolf,

mit der SetBackAutoCollision() habe ich auch schon ein bisschen Probleme gehabt. Wenn die Maske und der Hintergrund getrennte Bitmaps sind und jeweils extra geladen werden klappt es. KOpiere ich die beiden (und die sprites ) in eine Bitmap und lade dann nur die bereiche klappt es nicht und die figur verläuft sich. Sobald die MAske eine eigene Bitmap ist (Kopie des Hintergrunds mit farbflecken) klappt es.

Gerold
 
20.04.2004  
 



Hi,

selbstverständlich muß die Maskenbitmap eine einzelne Bitmap sein, werden noch andere Daten darin aufbewahrt, dann ändert sich natürlich auch die Größe und Länge der Bitmap, und SetBackAutoCollision() rechnet mit verkehrten Werten.
Außerdem wird für eine Maskenbitmap nur ein 2-Farben-Bild benötigt, alles andere ist Speicherverschwendung.

Darum ist es auf jedenfall vorteilhafter ein Stück Quellcode zu posten, dort ist ein Fehler immer besser zu finden als in einer Fehlerbeschreibung.

Ich weiß, manche Funktionen sind für Einsteiger nicht einfach zu handhaben, aber jeder wird sich denken können, das Funktionen wie SetBackAutoCollision() höchst komplex arbeiten und dabei trotzdem nur eine Funktion benötigen...

Nächtliche Grüße,
Frank
 
20.04.2004  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

4.774 Betrachtungen

Unbenanntvor 0 min.
Mittermeier Daniel30.01.2012

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

unbekannt (11x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie