Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

C-Sharp XNA Gamestudio Update Methode Steuerungsproblem

Mitglied: admin-lif

admin-lif (Level 1) - Jetzt verbinden

08.11.2011, aktualisiert 11:23 Uhr, 3227 Aufrufe, 4 Kommentare

Hi,
C# gab es nicht als Auswahl, deshalb poste ich mein Problem hier (bin mir nicht sicher ob ich hier im Forum überhaupt richtig bin):

Ich habe angefangen ein Spiel mit XNA Gamestudio zu schreiben und komme nicht weiter.

Die folgende Update-Methode in der game.cs bewirkt, dass sich meine Spielfigur (Sprite) auf der Map bewegen kann. Der Sprite kann sich bei der Methode unten in alle Richtungen bewegen, sprich auch Diagonal! Ich möchte die Methode so ändern, dass Bewegungen nur rechts/links/oben/unten möglich sind.
Hab schon alles mögliche probiert und verzweifle etwas daran.


protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
Tilemap.motion = Vector2.Zero;

currentState = Keyboard.GetState();

if (currentState.IsKeyDown(Keys.Up))
{
spieler1.UpdateUp(3, 0.1f, true);
if (spieler1.IsRanged) Tilemap.ScrollUp();
}
if (currentState.IsKeyDown(Keys.Left))
{
spieler1.UpdateLeft(1, 0.1f, true);
if (spieler1.IsRanged) Tilemap.ScrollLeft();

}
if (currentState.IsKeyDown(Keys.Down))
{
spieler1.UpdateDown(4, 0.1f, true);
if (spieler1.IsRanged) Tilemap.ScrollDown();
}
if (currentState.IsKeyDown(Keys.Right))
{
spieler1.UpdateRight(2, 0.1f, true);
if (spieler1.IsRanged) Tilemap.ScrollRight();
}

if (Tilemap.motion != Vector2.Zero)
{
Tilemap.motion.Normalize();
Tilemap.camera.Position += Tilemap.motion * Tilemap.camera.Speed;
}

base.Update(gameTime);
}
Mitglied: opalka
09.11.2011 um 08:30 Uhr
Hallo,

das sich Deine Figur diagonal bewegt, liegt ja daran, dass z.B. die Taste Up und Left gedrückt wurden. Beide Tasten werden in Deinem Code abgefragt und eine entsprechende Bewegung ausgeführt. Anstatt für jede Taste eine if-Abfrage zu schreiben, solltest Du lieber mit if-else arbeiten:

if (currentState.IsKeyDown(Keys.Up))
{
spieler1.UpdateUp(3, 0.1f, true);
if (spieler1.IsRanged) Tilemap.ScrollUp();
}
else if (currentState.IsKeyDown(Keys.Left))
{
spieler1.UpdateLeft(1, 0.1f, true);
if (spieler1.IsRanged) Tilemap.ScrollLeft();
} else if ....

Und nun sollte sich die Figur nur noch in einer Richtung bewegen.

Gruß
Bitte warten ..
Mitglied: opalka
09.11.2011 um 08:43 Uhr
Nichts gegen das Administrator-Forum, aber vielleicht bist Du besser bei xnamag.de, mycsharp.de oder entwickler-forum.de mit solchen Fragen aufgehoben.
Bitte warten ..
Mitglied: admin-lif
09.11.2011 um 09:53 Uhr
hey, danke schon mal für den ansatz, werde ich gleich testen...

ich weiß schon dass ich hier nicht richtig bin, dachte ich probiers mal bevor ich mich woanders anmelden muss...
gruß
Bitte warten ..
Mitglied: admin-lif
09.11.2011 um 17:08 Uhr
da fällt mir ein, dass ich den ansatz auch schonmal probiert hatte, das läuft allerdings nicht so wie ich mir das vorstelle...
also beispielsweise, wenn "KeyUp" gedrückt wird und danach "KeyLeft", wird das laufen nach oben unterbrochen und der sprite läuft nach links >> so soll es sein!
auf der anderen seite ist es dann wieder so, dass bei "KeyDown" und danach "KeyRight", das Nach-Unten-Laufen nicht von "KeyRight" unterbrochen wird...
also das ganze ist quasi davon abhängig, welche Taste in der ersten if-Bedingung abgefragt wird... Ich verzweifle..
Bitte warten ..
Ähnliche Inhalte
C und C++

Powershell Methode Compare-Object als C-Sharp Methode

gelöst Frage von mayho33C und C++4 Kommentare

Hallo @ All Ich beiße wieder mal an einem Problemchen und hoffe auf eure Unterstützung Ich möchte folgendes Powershell-Scriptchen ...

Entwicklung

C-Sharp Methode Eigenmittel ausrechnen

gelöst Frage von adminstEntwicklung4 Kommentare

Hallo zusammen Ich stehe bei einer C# Aufgabe auf dem Schlauch. Ich muss eine Eingabe vom txtKaufpreis auslesen + ...

Visual Studio

C-Sharp Extension Methods kombinieren

gelöst Frage von mayho33Visual Studio9 Kommentare

Hi @ All! Ich suche Heute schon den ganzen Vormittag nach einer Möglichkeit 2 Extensions in einem Commando zu ...

IDE & Editoren

IDE für C-Sharp und C++ auf Windows

gelöst Frage von BugdroidIDE & Editoren8 Kommentare

Hallo, Ich nutze derzeit Visual Studio, aber auf Dauer ist es mir etwas zu Ressourcenfressend und für meine Zwecke ...

Neue Wissensbeiträge
Server-Hardware

Lösung für Ersatz eines defekter Raid-Controllers

Anleitung von wellknown vor 4 StundenServer-Hardware1 Kommentar

Hallo, da ich nichts gefunden habe und selbst eine Lösung brauchte, hier eine kleine Anleitung für alle die vor ...

Windows 10

Kumuative Updates für .NET Framework kommen für Windows 10 V1809

Information von kgborn vor 8 StundenWindows 10

Microsoft hat das Ganze im Beitrag Announcing Cumulative Updates for .NET Framework for Windows 10 October 2018 Update vorgestellt. ...

Sicherheit
Neue IT-Administrator Ausgabe - Endpoint Security
Information von Frank vor 9 StundenSicherheit

Die Endgeräte in Unternehmen stellen das wohl größte Einfallstor für Angreifer dar. Ein geöffneter, infizierter E-Mail-Anhang oder der Besuch ...

Windows Tools

Windows 10 BitLocker Laufwerkverschlüsselung ohne TPM-Chip

Anleitung von Frank vor 9 StundenWindows Tools4 Kommentare

Diese Anleitung zeigt, wie man die Windows BitLocker Laufwerkverschlüsselung ohne TPM-Chip Schritt für Schritt aktiviert. Zwar haben viele Laptops ...

Heiß diskutierte Inhalte
Hyper-V
Windows Serer 2016 Standard virtualisieren
gelöst Frage von fritte87Hyper-V33 Kommentare

Hallo zusammen, ich muss für eine kleine Firma ein entsprechendes neues kleines Konzept bauen. Ich habe einen Server Standard ...

Windows Server
Kann DNS-Einträge nicht finden
gelöst Frage von BPeterWindows Server19 Kommentare

Hallo, wenn ich folgenden Befehl absetze, bekomme ich eine Liste zurück mit allen Einträgen der DNS-Zone. Wenn ich aber ...

Grafikkarten & Monitore
Einfachste Lösung Darstellung einer Website auf einem Monitor oder Fernseher
gelöst Frage von winIT3264Grafikkarten & Monitore12 Kommentare

Hallo zusammen, wir wollen eine einzelne Webseite dauerhaft auf einem Monitor / Fernseher darstellen. Ähnlich wie die Apotheken ihre ...

Firewall
Externer Zugriff auf Webserver
Frage von KingLouieFirewall12 Kommentare

Hallo zusammen, ich habe folgendes Problem: Ein Kollege muss gelegentlich auf einen Webserver zugreiffen, sowohl von intern als auch ...