Jump'n'Run - Problem
Übersicht

sprimeBetreff: Jump'n'Run - Problem |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo liebe Leute.. ^^ Ich bin ein Anfänger in Blitz basic, da ich es erst seit kurzer Zeit mache.. ich habe bereits ein 2D labyrinthspiel gemacht und nun wollte ich mich an ein kleines,"billiges" jump'n'run spiel setzen und es schaffen es spielreif zu machen ^^ doch als ich damit anfing bin ich auf viele probleme gestoßen.. ich habe bereits ein wenig in den foren herumgelesen doch die codes für die collisionsabfragen waren endlang und für mich nicht ansatzweise verständlich.. ich bin es so angegangen das mein spieler(anfangs ein einfacher kreis den ich gemalt habe und dann hochgeladen habe) dauerhaft mit y=y+5 nach unten gezogen wurde (halt um die schwerkraft ins spiel zu bringen) und wenn er mit dem boden kollidiert hat habe ich einfach gemacht y=y-5 damit er einfach stehen bleibt.. da wollt ich fragen ob es da eine einfache möglichkeit gibt? da ich ein jump'n'run spiel machen wollte, dass auf einem screen ist, also nicht wie mario, hab ich es so wie ein labyrinth aufgebaut.. (wie bei "i wanna be the guy" wenn das jemand kennt") und habe wenn man nach oben springt (y=y-10) und die wand oben berührt einfach wieder y=y+10 gemacht, doch dann musst ich ja wieder die wand oben und die wand unten in einzelnen bildern hochladen, da es ja unterschiedliche collisionsabfragen sind, das gleiche mit der wand links und rechts.. ich habe einfach (beispiel rechts) bei keydown(rechts) x=x+5 und wenn er rechts die wand berührt x=x-5 .. so weit so gut, doch 1. aufwendig und 2. wenn man sich jetzt an die rechte wand gestellt hat und ganz schnell hintereinander nach rechts gedrückt hat ist er aufeinmal rausgefallen.. kp wieso.. habt ihr eine einfache bessere möglichkeit??
Mein zweites großes problem war der sprung. ich habe wie gesagt einfach if keydown(oben) dann y=y-12 doch dann konnte man einfach immer weiter nach oben fliegen, anstatt er nach einem sprung wieder nach utnen fällt, doch da bin ich alleine auf keine lösung gekommen.. habt ihr tipps, einfach tuts oder codes für mich, wie ich mein erstes kleines jump'n'run spiel programmieren kann ?? ich danke euch im vorraus !!! mfg Daniel {sprime entertainment} |
||
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
das mit der schwerkraft macht man so. If nichtboden then y=0.80*y . Wie man sieht, tritt sie nur ein , wenn man NICHT auf einem Boden steht. Edit: Wenn du 0|0 oben links hast, musst du natürlich *1.2 machen und y als Startwert 1 geben. Grüße TimBo |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
![]() |
blackgecko |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und beim Sprung nimmst du nicht Keydown(oben) sondern Keyhit![]() |
||
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die. |
sprime |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja okay habe beide Punkte umgesetzt doch der mit dem nichtboden.. ich seh nicht den unterschied zwischen dem was ich gemacht hab^^ und zum 2. : ja stimmt gute idee, bloß wie mach ich das er langsam springt sag ich mal, im moment "teleportiert" er sich sofort um x-viele koordinaten nach oben.. danke im vorraus | ||
Kruemelator |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mach es am besten mit Beschleunigung:
Schwerkraft: ybeschleu = ybeschleu + 1 Sprung: ybeschleu = -10 Bei jedem Scheilfendurchgang: y = y + ybeschleu Und bei der Kollision ist es doof wenn man dann einfach wieder zurück spring, dann könnte es sein das die Figur "schwebt". Gruß Kruemelator |
||
![]() |
Badudel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
ich glaube, dein Verständnisproblem liegt dabei, "warum mach ich nicht immer y+ und bei ner Kollision einfach wieder y-?" Ganz einfach, stell dir mal vor, deine Figur steht auf dem Boden. Dann wird sie nach unten gezogen. Dann wieder nach oben. Das ist Tempoverlust, weil zwei unsinnige Aktionen ausgeführt werden. Unsinnige Aktionen sollte man beim Programmieren immer vermeiden, oder machst du in echt auch gerne mal ganz oft mal die Sekunde etwas unsinniges?...) Außerdem kann es sein, dass wenn die Figur auf einem dünnen strich steht (zb <5 pixel) und jetzt die schwerkraft die Figur erst 5 Pixel nach unten zieht (fällt durch), dann aber gar nicht mehr kollidiert, dann kann fällt die Figur einfach plums durch. Deswegen solltest du alles, also laufen, springen und fallen, erst nach der Kollisionsüberprüfung, wenn die figur auf den neuen Koordinaten nicht kollidiert, ausführen. Und das natürlich am Besten mit Beschleunigung. Gruß, Badudel |
||
Wir werden dem Schwein schon schlachten, auch wenn ihm quiekt.
Zum Teufel mit das Grammatik! |
sprime |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok, soweit verstanden.. ^^ wie mache ich denn jetz den befehl für: wenn er nicht den boden berührt das dann ybeschleu=ybeschleu+1 is ?? If not imagescollide, oda if imagescollide not, oda wie ?? | ||
![]() |
Nicdel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] If Not ImagesCollide(...)
Zum Thema ImagesCollide: https://www.blitzforum.de/foru...p?p=284562 |
||
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 |
sprime |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
If Not ImagesCollide (hod4,hod4x,hod4y,0,hod2,hod2x,hod2y,0) Then
ybeschleu=ybeschleu+1 EndIf If KeyDown(203) Then x=x-5 If KeyDown(205) Then x=x+5 If KeyHit(200) Then ybeschleu=-10 y=y+ybeschleu warum funktioniert das nicht mit der kollsion bzw nicht kollsion. ?? |
||
![]() |
Badudel |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich geh mal davon aus, dass du das alles in deiner schleife hast?
ich geh auch davon aus, dass hod4 dein Charakter und hod2 dein level ist? dann liegt es wohl daran, dass y=y+1 in wirklichkeit hod4y=hod4y+1 heißen soll. Wenn das das Problem war, hier noch 2 weitere WICHTIGE Tipps: 1. Die Kollisionsfrage sollte immer die neuen Koordinaten abfragen, denn wichtig ist es ja, ob er auf der neuen Position kollidiert, also ImagesCollide (hod4,hod4x,hod4y+beschleuy,0,hod2,hod2x,hod2y,0) Then ... 2. Genauso muss man auch das Laufen erst überprüfen, ob auf den neuen X-Koordinaten kollidiert Gruß, Badudel |
||
Wir werden dem Schwein schon schlachten, auch wenn ihm quiekt.
Zum Teufel mit das Grammatik! |
![]() |
orpheus_2003 |
![]() Antworten mit Zitat ![]() |
---|---|---|
HI.
Wenn du Hilfe brauchst um Kollisionen von Tileset mit dem Player zu machen. Ich bin da endlich durch. Hat mich aber auch Monate gekostet. Wenn du also mal ein Grundgerüst hast, einfach melden. Gruß Orpheus Ach ja. Auch andere Fragen sind gerne willkommen. Schau mal: So sieht meins momentan aus. Nach 3 Monaten Arbeit: Http://Wizard.lexigame.de |
||
GazerStar - the beginning
http://gazerstar.lexigame.de/ Wizard (Worktitel) http://wizard.lexigame.de |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group