AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Andorra 2D [Ver. 0.4.5.1, 31.12.08]
Thema durchsuchen
Ansicht
Themen-Optionen

Andorra 2D [Ver. 0.4.5.1, 31.12.08]

Ein Thema von igel457 · begonnen am 24. Nov 2006 · letzter Beitrag vom 14. Sep 2011
Antwort Antwort
Seite 98 von 101   « Erste     4888969798 99100     Letzte »    
Vasco da Gama

Registriert seit: 2. Aug 2009
131 Beiträge
 
Delphi 2009 Professional
 
#1

Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]

  Alt 1. Sep 2009, 18:36
Weiß das niemand? Nichtmal der gute Igel?
mfG trotzdem
Flo
Programmiere inzwischen hauptsächlich mit C++. Nicht böse werden
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]

  Alt 1. Sep 2009, 18:49
1. Ja du kannst einem Sprite mehrere Bilder zuweisen, wenn du eine entsprechende Klasse davon ableitest, die das unterstützt.
2. Das musst du entsprechend Umrechnen. Du kennst die Größe des Viewports, die Größe des Koordinatensystems und die Position deiner Spriteengine.
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Vasco da Gama

Registriert seit: 2. Aug 2009
131 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]

  Alt 2. Sep 2009, 10:44
Hi Andreas, vielen Dank für deine Antwort.

zu 1.:
Das bekomme ich wohl vorerst nicht hin.

zu 2.:
Da viel mir jetzt was auf.
mit
Delphi-Quellcode:
   p := Mouse.CursorPos;
   Showmessage('X: '+IntToStr(p.X) +#13#10+ 'Y: '+IntToStr(p.Y));
im MouseDown Ereignis des Forms erhalte ich immer Werte, relativ zu dem Punkt, der zuletzt angeklickt wurde.
Kann sich das jemand erklären, bzw. kennt da jemand eine Lösung?

mfG und Danke
Flo
Programmiere inzwischen hauptsächlich mit C++. Nicht böse werden
  Mit Zitat antworten Zitat
fui-tak

Registriert seit: 24. Okt 2008
117 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]

  Alt 2. Sep 2009, 13:07
Meiner Erfahrung nach gibt Mouse.CursorPos die Koordinaten der Maus auf dem Bildschirm an, also den Abstand von oberer und linker Monitorkante
  Mit Zitat antworten Zitat
Vasco da Gama

Registriert seit: 2. Aug 2009
131 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]

  Alt 2. Sep 2009, 14:37
Hi, tatsächlich hast du Recht, ich weiß auch nicht, was da vorhin falsch war.
Allerdings, bei folgender DoMove procedure
Delphi-Quellcode:
procedure TEinheit.DoMove(TimeGap: Double);
var A, B, AB, BB: Integer;
begin
inherited DoMove(TimeGap);
A := round(X);
B := round(X+200);
AB := round(Y);
BB := round(Y+200);


if (Aim.X in [A..B]) and (Aim.Y in [AB..BB]) then // er bleibt stehen
begin
  AnimActive := false;
  AnimLoop := false;
  FXSpeed := 0;
  FYSpeed := 0;
  case FDirection of //das kommt später
    dirS: AnimPos := 64;
    dirSW: ;
    dirW: ;
    dirNW: ;
    dirN: ;
    dirNE: ;
    dirE: ;
    dirSE: ;
  end;


end
else // er läuft weiter
begin
    X := X + FXSpeed * TimeGap;
    Y := Y + FYSpeed * TimeGap;
end;

Collision;
end;
bleibt die Figur niemals stehen...

Weiters durchläuft er auch ein Haus bei folgender DoCollision:
Delphi-Quellcode:
procedure TEinheit.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
inherited;
  if (Sprite is THaus) then
  begin
    AnimActive := false;
    AnimLoop := false;
    FXSpeed := 0;
    FYSpeed := 0;
    case FDirection of
      dirS: AnimPos := 64;
      dirSW: ;
      dirW: ;
      dirNW: ;
      dirN: ;
      dirNE: ;
      dirE: ;
      dirSE: ;
    end;
  end;

end;
Flo
Programmiere inzwischen hauptsächlich mit C++. Nicht böse werden
  Mit Zitat antworten Zitat
Vasco da Gama

Registriert seit: 2. Aug 2009
131 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]

  Alt 2. Sep 2009, 16:57
kleine ergänzung:

Aim wird so gesetzt:
Delphi-Quellcode:
procedure TEinheit.Gehen(P: TPoint);
begin
  FYSpeed := 0;
  FXSpeed := 0;
  Aim := p;
  p.X := p.X - round(X);
  p.Y := p.Y - round(Y);
  FXSpeed := Speed * p.X / sqrt(p.X * p.X + p.Y * p.Y);
  FYSpeed := Speed * p.Y / sqrt(p.X * p.X + p.Y * p.Y);
  AnimLoop := true;
  AnimActive := true;
  SetLength(Form2.men, Length(Form2.men)+1);
  Form2.men[Length(Form2.men)-1] := TEinheit.Create(Form2.AdSpriteEngine2);

end;
und zu gehen komm ich so, in der MouseDown procedure:
Delphi-Quellcode:
if (Button = mbRight) then
  begin
    if Length(men) > 0 then
    begin
    for i := 0 to Length(men)-1 do
    begin
      if men[i].angeklickt then
      begin
          men[i].Gehen(P);
      end;
    end;
    end;

  end;
Flo
Programmiere inzwischen hauptsächlich mit C++. Nicht böse werden
  Mit Zitat antworten Zitat
Vasco da Gama

Registriert seit: 2. Aug 2009
131 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]

  Alt 3. Sep 2009, 10:48
Hat sich erledigt, konnte das Problem lösen.
Flo
Programmiere inzwischen hauptsächlich mit C++. Nicht böse werden
  Mit Zitat antworten Zitat
Vasco da Gama

Registriert seit: 2. Aug 2009
131 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]

  Alt 5. Sep 2009, 17:21
Jetzt hab ich aber eine weitere Frage.
Eine Klasse wurde von TImageSprite abgeleitet.
im DoMove dieser rufe ich ganz am Ende:
Collision; auf.
An diese Stelle komme ich immer, allerdings wird die DoCollision procedure niemals ausgeführt. Muss ich für Kollisionen noch etwas beachten?

Danke mfG
Flo
Programmiere inzwischen hauptsächlich mit C++. Nicht böse werden
  Mit Zitat antworten Zitat
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]

  Alt 5. Sep 2009, 17:41
Schau dir mal die Demo von WormHunter an.
Ich glaube die müsste dir da weiterhelfen
  Mit Zitat antworten Zitat
Vasco da Gama

Registriert seit: 2. Aug 2009
131 Beiträge
 
Delphi 2009 Professional
 
#10

Re: Andorra 2D [Ver. 0.4.5.1, 31.12.08]

  Alt 5. Sep 2009, 17:46
Hi, diese Demo hab ich mir bereits angeschaut, allerdings konnte ich nur feststellen, dass ich am Ende von DoMove, Collision; aufrufen muss.
Und dann in DoCollision die genaue Behandlung.(if sprite is ... etc.)
Genau dies mache ich auch, muss ich für Kollisionen eventuell irgendwelche Befehle ich die Idle procedure schreiben?

mfG
Flo
Programmiere inzwischen hauptsächlich mit C++. Nicht böse werden
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 98 von 101   « Erste     4888969798 99100     Letzte »    


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 19:28 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