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, 3252 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
Visual Studio
C Sharp - Runden
gelöst Frage von Cubic83Visual Studio5 Kommentare

Guten Morgen, ich habe ein Problem unter C# bei dem ich den Preis eines Artikels ohne Mehrwertsteuer berechnen muss. ...

C und C++
C-sharp Form buggt
gelöst Frage von YanmaiC und C++2 Kommentare

Hallo ihr Administratoren. Ich habe ein kleines Problem. Unszwar möchte ich eine Ordner von C# zu einem PHP Script ...

C und C++
C Sharp XAML Universal
Frage von DippsC und C++3 Kommentare

Hallo ich versuche gerade mit C#2015 ein Projekt Universal XAML zu erstellen um auf einem Raberry PI 2 mit ...

C und C++
C-sharp SearchPattern (Regex)
Frage von YanmaiC und C++6 Kommentare

Hallo ihr Administratoren, ich verwende ein AUtocpmpletemenu Plugin. Dort habe ich Snippets, die dann sozusagen completed werden. Beim erstellen ...

Neue Wissensbeiträge
Firewall
PfSense 2.5.0 benötigt doch kein AES-NI
Tipp von ChriBo vor 1 TagFirewall1 Kommentar

Hallo, Wie sich einige hier erinnern werden hat Jim Thompson in diesem Aritkel beschrieben, daß ab Version 2.5.0 ein ...

Internet
Copyright-Reform: Upload-Filter
Information von Frank vor 2 TagenInternet1 Kommentar

Hallo, viele Menschen reden aktuell von Upload-Filtern. Sie reden darüber, als wären es eine Selbstverständlichkeit, das Upload-Filter den Seitenbetreibern ...

Google Android

Blokada: Tracking und Werbung unter Android unterbinden

Information von AnkhMorpork vor 2 TagenGoogle Android1 Kommentar

In Ergänzung zu meinem vorherigen Beitrag: Blokada efficiently blocks ads, tracking and malware. It saves your data plan, makes ...

Google Android
Facebooks unsichtbare Datensammlung
Information von AnkhMorpork vor 2 TagenGoogle Android2 Kommentare

Rund 30 Prozent aller Apps im Play-Store nehmen Kontakt zu Facebook auf, sobald man sie startet. So erfährt der ...

Heiß diskutierte Inhalte
Linux Userverwaltung
LogIn Versuche beschränken auf EINEN Versuch
gelöst Frage von GarroshLinux Userverwaltung23 Kommentare

Folgendes Problem Ich habe einen dezidierten Server beim Hoster gemietet, installiert ist Ubuntu 18.04.2 LTS‬ und als Webinterface Plesk. ...

Backup
Wo installiert man Veeam bei SoHo?
Frage von EDVMan27Backup14 Kommentare

Hallo, nachdem ich die neue Veeam CE bei mir getestet habe, wollte ich es einmal bei einem Kunden testen. ...

Ubuntu
Exchange Alternative auf Ubuntu
Frage von TELLOUbuntu11 Kommentare

Hi NG, wir müssen für unsere Kleine Firma (5 User) das Email / Kalendersystem neu einrichten. Ich könnte jetzt ...

Batch & Shell
Tasklist überprüfen
Frage von IleiesBatch & Shell10 Kommentare

Hallo zusammen, Wie kann ich in Batch überprüfen, ob gerade der Prozess "Skype.exe" ausgeführt wird? Also nicht so dass ...