Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

09.05.2013, 11:52

Kamerabewegung, funktioniert nur zum teil

Hey Leute

Habe jetzt schon etliche Sachen ausprobiert, komme aber nicht zum 100%tigen ergebnis ^^.

Ich habe eine Kamera für meine Karte(map), soweit klappt diese auch, bewegt sich mit dem Spieler, aber nur bis zu einem bestimmten Punkt.

Der Spieler beginnt ab xPosition 0 und YPosition0.


Der Anfang der Map wird super dargestellt, komme ich aber mit der Kamera über 400 Pixel, verschwindet mir der Spieler, und die Kamera geht zwar nach, zeigt diesen aber nicht mehr an, weil dieser nicht mehr im Bereich ist.


Hier mal der Code


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int Max_Map_Width;
int Max_Map_Height;
Max_Map_Width=MaxMapWidth*50;
Max_Map_Height=MaxMapHeight*50;
        ShowArea.x = ( Player.x + Player.w / 2 ) - ShowArea.w / 2;
        ShowArea.y = ( Player.y + Player.h / 2 ) - ShowArea.h / 2;
         if( ShowArea.x < 0 )
        {
                ShowArea.x = 0;
         }
          if( ShowArea.y < 0 )
             {
                 ShowArea.y = 0;
            }
             if( ShowArea.x > Max_Map_Width - ShowArea.w)
                {
                    ShowArea.x = Max_Map_Width - ShowArea.w ;
             }

              if( ShowArea.y > Max_Map_Height - ShowArea.h )
                {
                    ShowArea.y = Max_Map_Height - ShowArea.h;
              }



Die Map ist 32*50 weit also = 1600 pixel.
Die Hoehe ist 24*50=1200;
Die Kamera zeigt einen Bereich von 800 Weite und 600 Hoehe.

Der Spieler ist Hoehe 40 und Breite 40

Habe schonmal bei Lazy foo geschaut, aber das ist soweit das gleiche wie ich auch hatte :)


Hoffe ihr könnt mir helfen MFG Leri

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

2

09.05.2013, 12:18

Dann liegt dein Problem wohl irgendwo anders. Wenn die Kamera richtig scrollt, du nur keinen Spieler mehr siehst, dann wird vermutlich der Spieler einfach nicht mehr richtig angezeigt.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

3

09.05.2013, 12:30

nene, die map wird bis 400 pixel mit dem Spieler wunderbar gescrollt, nur danach scrollt die map halt langsamer.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

4

09.05.2013, 13:25

Hast du das ganze mal mit dem Debugger durchlaufen? Wenn nicht wäre das jetzt der nächste Schritt.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

5

09.05.2013, 13:29

ich glaube das hat eher mit der Berechnung zutun

genau ab 400 pixel, ist der Player schon über die Kamera hinausgelaufen, weiß aber nicht, wie ich die distance und die Camera berechnen soll.

Die berechnung ist ja
ShowArea.x = ( Player.x + Player.w / 2 ) + ShowArea.w / 2;
ShowArea.y = ( Player.y + Player.h / 2 ) - ShowArea.h / 2;

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

6

09.05.2013, 13:42

Wenn ShowArea.x/y die x/y-Koordinaten der Kamera sind, und diese auf den Spieler fokussiert sein soll, dann wäre das +/- ShowArea.w/h / 2 doch überflüssig, oder täusche ich mich da? oO
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

7

09.05.2013, 13:49

der player soll mittig der Kamera positioniert sein, bis der player 400 pixel erreicht, ist die Kameraposition = 0.

die /2 ist für die mittige Positionierung.

Der Punkt ist einfach, wenn der Player 800 Pixel erreicht hat, geht er über die Kamera hinaus.

Ich weiß momentan bloss nicht warum, die Kamera bewegt sich nicht genau mit dem Spieler, obwohl es die x und y Position des Spielers genau dafür nimmt

8

09.05.2013, 13:54

Ich möchte ja nur, das der Spieler mittig der Kamera ausgerichtet wird, und wenn die Kamera halt am Ende der map ist, soll diese ja stehen bleiben.

Wie schon gesagt, lach links klappt das ganze bloss nach rechts rüber, bewegt sich der spieler schneller als die Kamera, und ich geb ja explizit die x,y Koordinaten des Spielers für die Kamera.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

9

09.05.2013, 13:56

Funktioniert denn alles, wenn du die 4 Bedingungen am Ende entfernst, die Kamera sich also auch außerhalb der Karte bewegen kann und der Spieler immer mittig ist? Und welche Distance meinst du? Hast du mal meinen Tipp mit dem Debugger versucht?
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

10

09.05.2013, 15:00

ne leider klappt auch ohne die if bedingungen nicht, das er die ganze zeit in der Mitte bleibe :O

Ich werd mir die ganze Sache nochmal anschauen, wenn ich nacher Zeit habe.

Melde mich dann mit neuerungen ^^

Werbeanzeige