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

11

19.04.2016, 20:43

Hi danke für den Link, werde ich mir morgen mal ein wenig durchlesen (:.

Ist momentan noch alles überwältigent. Je mehr man sich einarbeitet, desto mehr merkt man wieviel arbeit hinter den kleinsten Sachen steckt :D.

12

20.04.2016, 12:37

Hallo, hätte mal ne Frage zu MonoGame:

Ich portiere grad mein "Windows Forms Spiel" in Monogame und mache mich gerade an die Kollision mit dem Rand.
Jetzt verwirrt mich aber MonoGames ein wenig:

Am Anfang hat es nicht geklappt da ich nicht wusste das Window.ClientBounds.X und Y nicht 0 sind, sondern die "Window Abmessung an sich". Dann habe ich es geändert.
Danach hat es zwar geklappt, aber mein Sprite ist an der rechten/unteren Ecke ein paar MM verschwunden.

Frage: Woher bekomme ich jetzt die exakten Abmasse von meinem GameWindow?

C#-Quelltext

1
2
  windowWidth = this.Window.ClientBounds.X;
      windowHeight = this.Window.ClientBounds.Y;


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
24
25
26
27
28
        public void CheckBounds(int wR, int wB)
        {
            if (playerPos.X <= 0 && playerPos.Y >= 0)
            {
                playerPos.X = 0;
                playerPos.Y = playerPos.Y;
            }

            if (playerPos.X >= 0 && playerPos.Y <= 0)
            {
                playerPos.X = playerPos.X;
                playerPos.Y = 0;
            }

            if (playerPos.X < wR && playerPos.Y + playerSprite.Height >= wB)
            {
                playerPos.X = playerPos.X;
                playerPos.Y = wB - playerSprite.Height;
            }
         
            if (playerPos.X + playerSprite.Width >= wR && playerPos.Y <= wB)
            {
                playerPos.X = wR - playerSprite.Width;
                playerPos.Y = playerPos.Y;
            }

           
        }


Ich habe das jetzt erstmal alles so geschrieben um zu testen, kann mir aber nicht erklären was jetzt an diesen "Rechnungen" falsch sein soll.

Würde mich über hilfe freuen,

Gruß

13

20.04.2016, 13:37

Hallo BlackArtC,

du kannst dir so Sachen aus dem GraphicDeviceManager holen. Dort solltest du auf den Viewport zugreifen dieser hat die Daten die du brauchst.

graphics.GraphicsDevice.Viewport. X,Y,Width,Height.

Viele Grüße

CreatingDreams

14

20.04.2016, 18:08

Hey danke,

hat geklappt. Das mit dem verschwundenen/überstehenden "Sprite" lag einfach nur daran das mein Sprite unten rum länger war, weswegen das Rectangle natürlich schon vorher ne kollision registriert.(Aber da die Sprites ja Transparenz sind, is mir das nich sofort aufgefallen). Dann versuche ich mein glück mal mit rotation xD

15

22.04.2016, 03:47

Hallo Leute,

ich hoffe mal ich kann hier auch mal nen kleinen Zwischenstand nach den ganzen Fragen posten :D.

Also wie man auf dem Bild "fast" sehen kann, klappt jetzt die Rotation zum Mauszeiger und das generieren einer sehr einfachen TileMap(mit einem Tile).
Tastensteuerung und einfache Kollision klappen auch c:. Langsam fügt sich alles zusammen, auch wenn ich Probleme haben werde das auf verschiedene Klassen aufzuteilen :/.

Aber naja, am Ende vom Tag wenigstens noch was geschafft (:.

Danke für eure Hilfe!

(Link)

Werbeanzeige