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

17.10.2011, 16:14

C# XNA Spielfigur andere Position zuweisen und Anziehungskraft?

Halihalo Leute Ich habe heute Angefangen mit XNA zu Spielen! Was mir auch gelungen ist! bis jetzt hab ich einen Hintergrund und eine Spielfigur naja die Spielfigur hängt nur in der Linken Ecke Oben rum ..(Steuerung kommt noch weiß schon wie^^) Naja nur ich möchte sie ungefähr in der Mitte haben und 10px Abstand vom Fenster Ende Unten. Ausserdem möchte ich das wenn kein Element(Stein o.ä.)Unter der Spielfigur ist das sie Runterfällt und wenn sie doch aus dem Fenster ist das sie Automatisch wieder nach Oben Teleportiert wird.

Wie mach ich sowas? Ist das zweite überhaupt möglich?

LG Xenotack oder auch von euch Foren-Spammer genannt :D

Ahja hier mein Code (Steuerung Implementiert!)

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace Chapo
{
    public class Game1 : Microsoft.Xna.Framework.Game
    {
        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;

        Texture2D background;
        Texture2D player;

        Rectangle player_rect;

        public Game1()
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";
            
            IsMouseVisible = true;
        }

        protected override void Initialize()
        {
           

            base.Initialize();
        }

        protected override void LoadContent()
        {
            spriteBatch = new SpriteBatch(GraphicsDevice);

            background = Content.Load<Texture2D>("background");
            player = Content.Load<Texture2D>("spieler");

            player_rect.Width = player.Width;
            player_rect.Height = player.Height;
        }

        protected override void UnloadContent()
        {
           
        }

        protected override void Update(GameTime gameTime)
        {
            KeyboardState kbState = Keyboard.GetState();
            if (kbState.IsKeyDown(Keys.Up))
                player_rect.Y -= 4;
            if (kbState.IsKeyDown(Keys.Down))
                player_rect.Y += 4;
            if (kbState.IsKeyDown(Keys.Left))
                player_rect.X -= 4;
            if (kbState.IsKeyDown(Keys.Right))
                player_rect.X += 4;

            base.Update(gameTime);
        }

        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);

            spriteBatch.Begin();
            spriteBatch.Draw(background, new Rectangle(0, 0, graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight), Color.White);
            spriteBatch.Draw(player, player_rect, Color.White);
            spriteBatch.End();

            base.Draw(gameTime);
        }
    }
}
I LIKE TRAINS!

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Xenotack« (17.10.2011, 16:23)


2

17.10.2011, 16:24

Du kannst deine Figur auch explodieren lassen und jedes Teil einzeln pro Frame wieder zusammensetzen, eine Möglichkeitsaussage ist bei dem Thema gerade recht fehl am Platz.
Schau einfach wie groß dein Bild ist und setze es an die richtige Position auf dem Bildschirm. Das war schon der ganze Spaß.
Außerdem überprüfst du, ob die Figur die 600px (unterer Bildrand) überschreitet und so setzt du sie wieder an den Punkt wo du sie haben willst.
Zur Anziehung: Guck dir mal Box2D an. Allgemein auch recht gut für das ganze Physik-Zeug. :D

MfG
Check

3

17.10.2011, 16:28

Ehm Teleportieren reicht schon xD, Was ist Box2D?
I LIKE TRAINS!

DerMark

Treue Seele

Beiträge: 324

Wohnort: Emsdetten

Beruf: Softwareentwickler

  • Private Nachricht senden

4

17.10.2011, 16:32

Zitat

LG Xenotack oder auch von euch Foren-Spammer genannt :D

Nicht witzig..

Zitat

Was ist Box2D?

Das schon.

Zu deinen anderen Fragen:
Hast du dir überhaupt mal angeschaut und überlegt wieso du eine Variable player_rect hast und was man damit so alles machen kann?
Oder ist dir irgendwann mal aufgefallen dass spriteBatch.Draw eine Überladung besitzt bei der man einen Vector2 genannt position angeben kann?

Du solltest endlich mal versuchen die Kinderkacke selbst zu lösen und nicht uns als google light zu missbrauchen.

Das selbe gilt für deine andere Frage.

Anfänger sein schön und gut, aber es nichtmal gebacken bekommen eine logische Überlegung anzustellen welche selbst mein ungeborenes Kind ohne kognitive Basisfähigkeiten schon schaffen würde, ist mehr als peinlich..

5

17.10.2011, 16:41

DerMark = Igno

Ehm zum Thema zurück ...
I LIKE TRAINS!

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

6

17.10.2011, 17:05

Eigentlich sollte man dich ignoren. Trotzdem bin ich mal so freundlich und gebe dir nen Link.
http://www.xnamag.de/forum/viewtopic.php?t=1117


Als kleinen Bonus noch nen 2ten und 3ten Link welche noch hilfreicher sein sollten:
http://www.administrator.de/Wie_google_ich_richtig%3F.html

http://www.gertis-pc-tipps.de/internet-t…rnet-anfaenger/
„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.“

7

17.10.2011, 17:06

Danke den 1 Link kenn ich schon 2 und 3 Link solltest du dir mal anschauen ich weiß das schon :)
I LIKE TRAINS!

8

17.10.2011, 17:07

DerMark
/sign

C-/C++-Quelltext

1
2
3
4
if (kbState.IsKeyDown(Keys.Up))                 player_rect.Y -= 4;
 if (kbState.IsKeyDown(Keys.Down))                 player_rect.Y += 4;
            if (kbState.IsKeyDown(Keys.Left))                 player_rect.X -= 4;
            if (kbState.IsKeyDown(Keys.Right))                 player_rect.X += 4;


Hier hast du es doch eigentlich schon stehen... also den Ansatz.

Zitat

2 und 3 Link solltest du dir mal anschauen ich weiß das schon
Frech³

9

17.10.2011, 17:11

DerMark /sign
Kommt zu häufig vor :D

10

17.10.2011, 17:14

Zitat

Frech³
Tja wenn man hier in einem Forum auch sowas zugeschickt bekommt es aber selber nicht besser kann ...
I LIKE TRAINS!

Werbeanzeige