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, 3177 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
Microsoft Office

MS Office Excel - Formel wird angezeigt, aber nicht berechneter Wert!

Tipp von holli.zimmi zum Thema Microsoft Office ...

Ähnliche Inhalte
Windows 7
gelöst Windows 7 Update Neustart dialog beenden? (2)

Frage von aif-get zum Thema Windows 7 ...

Windows Server
WSUS Konsole Update Ansichten verschwunden (9)

Frage von D-Line zum Thema Windows Server ...

Exchange Server
SBS 2011 Exchange Update auf SP3 (3)

Frage von Mazenauer zum Thema Exchange Server ...

Switche und Hubs
Firmware Update Cisco ASA 5505 (3)

Frage von JoeJoe zum Thema Switche und Hubs ...

Heiß diskutierte Inhalte
Hyper-V
gelöst Reiner Hyper- V Server oder lieber Rolle (19)

Frage von Winuser zum Thema Hyper-V ...

SAN, NAS, DAS
gelöst Synology Version 6.1 Probleme (17)

Frage von Hendrik2586 zum Thema SAN, NAS, DAS ...

Router & Routing
gelöst IP Kamera für drei unabhängige Netzwerke (15)

Frage von ProfessorZ zum Thema Router & Routing ...

Windows Server
gelöst Rechte als Admin vergeben - Zugriff verweigert (14)

Frage von Ghost108 zum Thema Windows Server ...