3 registered members (NewbieZorro, TipmyPip, 1 invisible),
19,045
guests, and 8
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Re: Das Level wechseln...
[Re: TIEclon]
#351189
12/22/10 16:56
12/22/10 16:56
|
Joined: Jan 2010
Posts: 22 Bielefeld, Germany
TIEclon
OP
Newbie
|
OP
Newbie
Joined: Jan 2010
Posts: 22
Bielefeld, Germany
|
Nur ein Softwareproblem: In der Welt chauen wir (etwas geneigt) auf das Spielermodell. Je nach dem Wo sich jetzt der Mauszeiger auf dem Bildschirm befindet, dreht sich das Spielermodell so ,dass es diesen ansieht.
Das Problem: Wenn wir uns den Bildschirm als Koordinatensystem mit dem Spielermodell der Mitte als Ursprung vorstellen, läuft die Bewegung im III und IV Quadranten weiterhin ohne Probleme, Lediglich im ersten un zweiten dreht er sich nicht richtig, d.h.: man dreht sich wieder zurück, zu stark, etc.
Last edited by TIEclon; 12/22/10 17:00.
|
|
|
Re: Das Level wechseln...
[Re: TIEclon]
#351526
12/26/10 14:38
12/26/10 14:38
|
Joined: Jan 2010
Posts: 22 Bielefeld, Germany
TIEclon
OP
Newbie
|
OP
Newbie
Joined: Jan 2010
Posts: 22
Bielefeld, Germany
|
Ne, stört mich nicht. Ich hoffe ihr findet durch: if(cam_type != 2 && pause == 1 && zoomvorgang == 0 && mouse_right != 1 ) { vec_set(camera.x,player.x); vec_add(camera.x,abs_cam_pos); if(mouse_pos.y-y_view_achse+mouse_spot.y != 0 && mouse_pos.x-640 != 0) { if(mouse_pos.y-y_view_achse+mouse_spot.y > 0) { player.pan = atan((mouse_pos.x-640+mouse_spot.x)/(mouse_pos.y-y_view_achse+mouse_spot.y))-90+kameradrehung; } else { player.pan = atan((mouse_pos.x-640+mouse_spot.x)/(mouse_pos.y-y_view_achse+mouse_spot.y))-270+kameradrehung; } } } Alle Konditionen in dem If-Befehl sind erfüllt. Die ersten beiden vec_set und vec_add Befehle können vernachlässigt werden, dabei handelt es sich um die Drehung der Kamera um den Spieler selbst. Nur der letze Block ist jetzt entscheidend. Als erstes wird nachgesehen, dass niemals durch null geteilt wird, denn sonst bekäme man die ein oder andere Fehlermeldug während dem Spiel. Danach wird geschaut, ob sich der Mauscursor über oder unterhalb des Spielers befindet. Man muss sich immer eine horizontale Linie durch den Player vorstellen. Dessen Höhe wird durch die Variable y_view_achse angegeben. Das hat alles mit dem zuvor angesprochenen Koordinatensystem zu tun, das i Gedanken erstellt wird.. Nach der Entscheidung jedenfalls wird der atan ausgeführt um den Winkel, um den sich gedreht werden muss zu erfahren. Wenn sich der mousecursor oberhalb des Spielers befindet wird eigentlich das selbe gemacht, nur um 180 grad gespiegelt. Die -90 Grad haben damit zu tun, dass ich das Modell in MED um 90 verkehr herum gebaut habe  . +kameradrehung gibt an, um Wieviel grad sich die kamera um den Spieler gedraht hat. Was mich wundert ist, dass die Variablen Kameradrehung und y_view_achse den selben wert annehmen wenn man das Haus verlässt, wie den den man in der Welt hatte als alles noch funktionierte. Ich hoffe ihr versteht mich soweit...
|
|
|
Re: Das Level wechseln...
[Re: TIEclon]
#351616
12/27/10 14:28
12/27/10 14:28
|
Joined: Jan 2010
Posts: 22 Bielefeld, Germany
TIEclon
OP
Newbie
|
OP
Newbie
Joined: Jan 2010
Posts: 22
Bielefeld, Germany
|
Ich konnte das Problem jetzt ausfindig machen, dennoch habe ich noch keine idee, wie ich es lösen könnte. Das Problem: Die Funktion, die ich ion meinem vorhergehenden Beitrag beschrieben habe funktioniert fehlerfrei so wie sie sollte. Ein Problem gibt es mit der Variable "y_view_achse". Zur Wiederholung: Diese Variable gibt an, auf welcher Höhe man eine horizontale Linie durch den Spieler ziehen kann, daher Achse(Mir fällt gerade auf das es eigentlich die x-Achse wäre, sorry). Jedenfalls bekommt diese Variable den selben Wert wie bei Spiel start, nämlich den, dass sie genaustens passt, sollange auch die Kamera eingestellt wird! Und dort liegt der Fehler, den dies geschieht erst nachdem das Level geladen wird! Und dann ist die Funktion schon wieder durch level_load beendet  ... Lösung: Am besten wäre es, man könnte die Funktion, die das Level lädt nicht von einer Entity abhängig machen. Zur errinerung: Man verlässt das Level indem man mit einem Block kollidiert, der dann die Funktion auslöst. Deshlb, da der Block verschwindet, werden seine, sowie alle anderen von ihm gestarteten Fun ktionen beendet! Wie wechselt ihr eure level um dem zu entgehen? MfG, TIEclon
|
|
|
Re: Das Level wechseln...
[Re: TIEclon]
#351707
12/28/10 00:54
12/28/10 00:54
|
Joined: Jul 2008
Posts: 894
TechMuc
User
|
User
Joined: Jul 2008
Posts: 894
|
Einfach vor (!!!) level_load den Wert des my Pointers in jeder Funktion die nicht beendet werden soll auf 0 setzten (evtl. ist nach dem setzten und vor dem level_load ein wait() erforderlich). bsp: while(1) { my = 0; //... level_load(".."); wait(10); } ==> funktion wird nicht beendet, obwohl sie level_load aufgerufen hat und eine action von einem entity ist  Viele Grüße, Timo
|
|
|
Moderated by mk_1, Perro, rayp, Realspawn, Rei_Ayanami, rvL_eXile, Spirit, Superku, Tobias, TSG_Torsten, VeT
|