AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Bewegung ins Spiel bringen...

Ein Thema von Myribo · begonnen am 4. Feb 2008 · letzter Beitrag vom 4. Feb 2008
 
Myribo

Registriert seit: 11. Sep 2007
Ort: Bielefeld
14 Beiträge
 
#1

Bewegung ins Spiel bringen...

  Alt 4. Feb 2008, 18:53
halli hallo liebe delphi community =)

zunächst entschuldigt bitte, falls dieses thema schon einmal behandelt wurde - ich habe bereits erfolglos gesucht..

nun aber zu meinem problem, bzw. zu meiner frage:
seit einiger zeit beschäftige ich mich mit delphi und schreibe momentan ein kleines 2d spiel (ansicht von oben).

ich habe eine kleine spielfigur in einem TRotateImage (drehbares bild, wie der name schon sagt).
ein timer läuft nebenbei (ja - geht bestimmt auch eleganter) und überprüft jedesmal, ob die tasten a oder d gedrückt sind.
wenn ja, wird der winkel der figur verändert (sie dreht sich, W A S D-steuerung). so nun möchte ich, dass sich die figur beim drücken der w und s taste natürlich auch bewegt. und zwar in genau die richtung, in die sie gerade blickt, bzw. gedreht ist.
ich habe also den winkel, bzw. die steigung und die geschwindigkeit (ich dachte an px/timerdurchlauf) der figur und möchte nun die neuen koordinaten berechnen.

kann mir vielleicht jemand von euch sagen, wie ich das machen kann?? ich weiß leider überhaupt nicht, wie ich meine versuche weiterführen kann, bzw. ob das überhaupt der richtige ansatz ist.

hier hattte ich mal was versucht:
Code:
var newangle,m,a,dX,dY,alpha,sinA:Double;
begin
  newangle:=MyChar.Angle;
  if IsKeyDown('D') then
  begin
    newangle:=MyChar.Angle-3;
  end;

  if IsKeyDown('A') then
  begin
    newangle:=MyChar.Angle+3;
  end;

  if newangle>360 then newangle:=newangle-360
  else if newangle<0 then newangle:=newangle+360;

  if IsKeyDown('W') AND (newangle<>90) AND (newangle<>270) then
  begin
    m:=tan(DegToRad(newangle));
    a:=MyChar.Speed;

    alpha:=180-90-newangle;
    sinA:=sin(alpha);
    dX:=sinA*a;
    dY:=dX*m;
    dX:=dX*-1;
  end;

// jetzt noch die spielfigur an die neuen koordinaten verfrachten...
im anhang befindet sich zwei screenshots von dem spiel, der zweite mit winkel"erklärung" (im code wäre das die variable newangle). das rote ding da mit dem kreis soll ein mensch von oben sein...


soo ich hoffe ich hab nix vergessen.
ich wär euch richtig dankbar, wenn ihr mir hier helfen könntet!
vielen dank schonmal...

LG
Myribo =)
Angehängte Grafiken
Dateityp: jpg spielfigur_mit_winkel_170.jpg (19,8 KB, 33x aufgerufen)
Dateityp: jpg spielfigur_149.jpg (115,5 KB, 30x aufgerufen)
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz