2D Shooter Vogelperspektive
Übersicht

Raven_in_a_boxBetreff: 2D Shooter Vogelperspektive |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also, hallo erstmal^^
Ich habe ein kleines Problem mit meinem Game (Zombie- Vogelpespektiven-shooter-game). Also, ich hab schon ein testlevel von ZVSG, aber ich hab nun 2 Grundlegende Probleme 1)Meine Figur wird duch WASD und der Maus gesteuert. ich hätte natürlich gerne, dass sich meine Figur dorthin dreht, wo der Spieler mit der Maus hinzeigt 2)Ich will das Spiel nicht mit Tiles bauen, sondern ich habe ein riesiges Jpeg bild,, auf das ich dann Objekte setzte. Aber ich schffe es nicht die Kamera sozusagen auf den Spieler zu zentrieren., sodass er durch das riesige Areal gehen kann. Dazu wollte ich bis jetzt alles bewegen außer dem Spieler,das wäre aber etwas umständlich, geht es denn nicht einfacher? MfG Ravenbox |
||
![]() |
Blackside |
![]() Antworten mit Zitat ![]() |
---|---|---|
hey,
zu 1.) Du musst das Bild 360 mal laden und immer um 1° drehen(am besten weniger laden und mehr drehen) und in einen Dim ![]() ![]() ![]() Für die Mausdrehung schau dir mal ATan2 ![]() ![]() zu 2.) wie du es vorhast wüsste ich nichts anderes, und meinst du nicht das, das so nen bischen zu rechenaufwämdig ist? |
||
Hier sollte eigentlich eine Signatur stehen! |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
360 Drehungen sind Quark, denn so genau guckt da eh keiner.. Alle 5 ° ein Schritt ist mehr als ausreichend und schont den Grakaspeicher.
Tiles wären sehr sinnvoll, raven. Du kannst natürlich statt des Players die Koordinaten des Hintergrundes ändern (wenn der Spieler nach rechts geht muss halt die x-Koordinate vom Hintergrund kleiner werden), aber du tust Dir und deiner Graka mit Riesenbildern keinen Gefallen. Unflexibel und ressourcenfressend. |
||
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 |
![]() |
Der_Schläfer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Aber ich schffe es nicht die Kamera sozusagen auf den Spieler zu zentrieren., sodass er durch das riesige Areal gehen kann. Dazu wollte ich bis jetzt alles bewegen außer dem Spieler,das wäre aber etwas umständlich, geht es denn nicht einfacher?
da gibt es doch noch diesen befehl, Origin, mit dem man den bildschirm-nullpunkt verschiebt... |
||
Raven_in_a_boxBetreff: Juhu |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke, bis jetzt das hilfreichste und schnellste Forum, in dem ich war.
@BladeRunner: Ist mir klar, dass es wirklich Ressourcenfressend ist, wenn man das alles lädt, aber nach meinen Tests muss ich sagen, es ist nicht wirklich schlimm, die Wartezeiten sind passabel und alles läuft flüssig, ich meine, ok, ich kann auch crysis flüssig zocken, weil ich einen verdammt schnellen Pc hab, aber ich habe es lieber, wenn relativ wenig Leute ein gutes und bugfreies Spiel von mir Spielen können, als wenn sehr viele Leute ein schlechtes Spiel spielen können*. Außerdem hat man beim Spiele programmieren noch einen Vorteil, da sich der Spieler wahrscheinlich ausschließlich auf das Spiel konzentriert, steht mir fast die ganze Power des Pc's zur verfügung. @ Der_Schläfer OMG DAAANKE, genau den Befehl such ich schon so lange... *Ich bin unfähig, gute Tiles zu zeichen Hier ist jetzt übrigens noch der 360° Code, den Bladerunner verurteilt ![]() Mein eigentliches Problem ist aber, dass er sich eben ned um 360° Grad dreht Als auto.bmp hab ich ein rotes Quadrat von 40x40 genommen. Code: [AUSKLAPPEN] Dim Auto(359) TFormFilter 0 x#=100 y#=100 For Winkel# = 0 To 359 Auto(Winkel#)=LoadImage("auto.bmp") MidHandle Auto(Winkel#) RotateImage auto(Winkel#),Winkel# MaskImage Auto(Winkel#),255,0,255 Next SetBuffer BackBuffer() While Not KeyHit(1) Winkel# = (ATan2(MouseX(), MouseY()) + 90) Mod 360 DrawImage Auto(Winkel#), x#,y# Line x#,y#,MouseX(),MouseY() Flip Cls Wend End Also das Problem liegt wahrscheinlich bei "Winkel# = (ATan2(MouseX(), MouseY()) + 90) Mod 360", aber ich finde den richtigen Dreh nicht. Die Zeile "Line x#,y#,MouseX(),MouseY()" ist nur dazu da, um mein Problem deutlischer zu machen und um zu sehen von wo er dreht (hat sich dann mit MidHandle geklärt). Thx schonmal im vorraus...Raven_in_a_box |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Atan2 erwartet die Parameter umgekehrt als meistens benutzt: Y/X, außerdem brauchst du eine Start und eine Ziel Koordinate. Wenn ich mich nicht vertan habe, sollte es so funktionieren:
Winkel# = ATan2(ZielY - StartY, ZielX - StartX) |
||
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) |
Raven_in_a_boxBetreff: Juhu |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok endlich, ich habs...
Code: [AUSKLAPPEN] Graphics 1024,768,32,1 Dim Auto(359) TFormFilter 0 ;<---frag nicht, ist so ein unnötiger befehl wie setbuffer, den man braucht HidePointer x#=500;<---x und y koordinaten von spieler y#=500 thex=(MouseX()-x#);<---experiment (unwichtig) they=(MouseY()-y#);<--- level=LoadImage("graphics/level1.jpg") Text 500,500, "done" For Winkel# = 0 To 359 Auto(Winkel#)=LoadImage("graphics/auto.bmp") ;<--------360 Grad drehen ist egal, schff ich schon MidHandle Auto(Winkel#) RotateImage auto(Winkel#),Winkel# MaskImage Auto(Winkel#),0,0,0 Next SetBuffer BackBuffer() While Not KeyHit(1) Winkel# = (ATan2(MouseY()-y#, MouseX()-x#) + 361) Mod 360 ;<----360 Gard drehung unwichtig, mach ich schon Text 1000,1000, Winkel# DrawImage level,0,0 DrawImage Auto(Winkel#), x#,y# DrawImage Auto(1),300,300 Line x#,y#,MouseX(),MouseY() ;Text x#,200,200 ;Text y#,200,230d ;Text one,200,250 Text two,x#,y#;<----degub Text, ist komisch, two verhält sich gay If MouseHit(1) Then DrawImage Auto(1),MouseX(),MouseY();<----nur ein test, ob man sozusagen schießen kann End If If KeyDown(17) Then y#=y#-4 End If If KeyDown(31) Then ;<-----Steuerung y#=y#+4 End If If KeyDown(32) Then x#=x#+4 End If If KeyDown(30) Then x#=x#-4 End If one=-x#+512 two=-y#+384 Origin one,two ;Der orogin Befehl versetzt den nullpunkt des bildschirms, man kann also schon über den bidschirm hinaus Wandern, aber die ;Maus geht ned weiter als 1024,768(oder so halt) Flip Cls Wend End Das ist mal der gesamte code, den ich bisher habe, nur falls ihn jemand betrachten will. Ich kann ihn jetzt drehen... Code: [AUSKLAPPEN] Winkel# = (ATan2(MouseY()-y#, MouseX()-x#) + 361) Mod 360 Jetzt hab ich aber leider noch EIN anderes Problem, ich hab eh alles kommentiert für einen freund, der aber auch ned weiter weiß. Unten im Code hab ich den Origin Befehl eingebaut, aber es funktioniert ned richtig. Es gab hier schonmal so ein Thema aber es wurde nie richtig gelöst, Origin hat auswirkungen auf die Maus...bei mir zumindest, aber ich hab version 1.86 , ich lad mir mal die neue runter und scha, ob sich da was geändert hat, weil bei meiner Version verschiebt er mit Origin zwar brav den Nullpunkt, aber die Maus läuft noch mit den Original Koordinaten, ich kann also nicht über pixel x=1024 und y=768 hinaus, irgendwelche vorschläge, ich edite einfach wenns mit der neuen 1.99 funzt. Thx schonmal im Vorraus Raven_in_a_box |
||
![]() |
Blackside |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey,
Du kannst doch einfach die Mauskodinaten umrechnen.... Sprich gucken ob der "Origin" kleiner oder größer als der "Nullpunkt" ist und dann entsprechend die "Verschiebung" zu den Maukoordinaten addieren/subtrahieren(am besten MouseX ![]() ![]() MFG Blackside |
||
Hier sollte eigentlich eine Signatur stehen! |
Raven_in_a_box |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke an alle, hab jetzt sozusagen die "Engine" (nenne sie Birdwatch Engine) fertig, man kann laufen,schießen, halt alles, was man können muss und das Laden dauert max 10 Sekunden. Es wird in ersichtlicher Zeit fertig sein, vorraussichtlich November oder Dezember 2008.
ok...edit die kollission fehlt noch, kommentare und hilfe (wie?) dazu? Raven_in_a_box |
||
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
du könntest die konturen über rechtecke und dreiecke annähern und auf kollision prüfen.. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group