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, 3184 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++
C-sharp andere Scrollbar hinzufügen (2)

Frage von Yanmai zum Thema C und C ...

Windows 7
gelöst Windows Update Fehlercode: 80072ee2 bzw 80072efd (10)

Frage von peterpa zum Thema Windows 7 ...

Server-Hardware
HP Server: Treiber Update (2)

Frage von tweety2007 zum Thema Server-Hardware ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Windows Server

Exchange 2010 Active Directory und Windows Server 2016

(4)

Erfahrungsbericht von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Internet
gelöst Mitarbeiter surft auf unerwünschter Seite - Wie damit umgehen? (50)

Frage von sabines zum Thema Internet ...

Netzwerke
LAN2LAN Verbindung sehr langsam flaschenhals gesucht (27)

Frage von PixL86 zum Thema Netzwerke ...

Router & Routing
PFsense - Netzverbindung steht, aber kein Internet vorhanden (24)

Frage von aschmid zum Thema Router & Routing ...

Windows Server
gelöst Windows 2016 Hyper-V und VHDS (19)

Frage von emeriks zum Thema Windows Server ...