Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Frage Entwicklung C und C++

Mitglied: admin-lif

admin-lif (Level 1) - Jetzt verbinden

08.11.2011, aktualisiert 11:23 Uhr, 3167 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 ..
Neuester Wissensbeitrag
Ähnliche Inhalte
C und C++
gelöst Powershell Methode Compare-Object als C-Sharp Methode (4)

Frage von mayho33 zum Thema C und C ...

Server-Hardware
gelöst HP Mircroserver und Proliant Bios Update (7)

Frage von DeathNote zum Thema Server-Hardware ...

Vmware
gelöst ESXi Update über vCenter Update Manager (4)

Frage von DKowalke zum Thema Vmware ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...