AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Andorra und Newton

Ein Thema von Neutral General · begonnen am 21. Jan 2008 · letzter Beitrag vom 22. Jan 2008
Antwort Antwort
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Andorra und Newton

  Alt 21. Jan 2008, 18:06
Hi,

Ich hab ein kleines Problem mit Newton im Bezug auf Andorra2D. Ich habe zwei Sprites.

1. Boden: TPhysicalBoxSprite;
2. Player1: TPhysicalBoxSprite

Player1:

Mass := 1;

Boden:

Typ := ptStatic;

Beide wurden mit InitializeShape; initialisiert. Wenn ich das Projekt starte dann fällt der Spieler... ... durch den Boden hindurch. Er sollte ja eigentlich auf dem Boden aufknallen. Ich habe mir auch mal die Demo angeschaut die bei Andorra dabei ist, aber da wird auch nichts anders gemacht..

Delphi-Quellcode:
PhApp := TPhysicalApplication.Create(AdEngine);
PhApp.SolverModel := smExact;

Player1 := TPhysicalBoxSprite.Create(AEngine);
Player1.Mass := 1;
Player1.InitializeShape;

boden := TPhysicalBoxSprite.Create(ADEngine)
boden.Image := AdImages.Find('test');
boden.Y := 300;
boden.Typ := ptStatic;
boden.InitializeShape;
Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

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

Re: Andorra und Newton

  Alt 21. Jan 2008, 19:16
Hallo,

bevor du "InitializeShape" ausrufst, muss die Sprite-Grafik geladen sein, bzw. "Width" und "Height" gesetzt.
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
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Andorra und Newton

  Alt 22. Jan 2008, 12:13
Hi,

Danke.. Hab ich auch eben grad festgestellt
Hab da aber noch ne weitere Frage....

Wenn ein Sprite auf den Boden fällt, dann springt es nochmals etwas nach oben, knallt wieder auf und springt wieder ein bisschen und landet dann endlich. Also sone Art "Flummieeffekt". Kann man das irgendwie ausschalten? Mich stört das. Ich dachte mal daran die Masse des fallenden Objekts groß genug zu machen. Nach meinem physikalischen Verständnis sollte da dann eigentlich nichts mehr hüpfen. Funktioniert aber leider nicht. Mein zweiter Ansatz war folgendes:

Delphi-Quellcode:
TDragonSprite = class(TPhysicalBoxSprite)
private
  FFrozen: Boolean;
  procedure SetFrozen(const Value: Boolean);
protected
  procedure DoMove(TimeGap:double); override;
  procedure DoCollision(Sprite: TSprite; var Done: Boolean); override;
public
  property Frozen: Boolean read FFrozen write SetFrozen;
  procedure Stop;
end;
Delphi-Quellcode:
procedure TDragonSprite.SetFrozen(const Value: Boolean);
begin
  FFrozen := Value;
  Active := not Value;
  CanDoMoving := not Value;
  if Value then
    Typ := ptStatic
  else
    Typ := ptDynamic;
  InitializeShape;
end;

procedure TDragonSprite.Stop;
begin
  Frozen := true;
  Frozen := false;
end;
Frozen := true; friert das Sprite sofort ein und unterbricht es bei allen physikalischen "Tätigkeiten"

Meine Idee:

Bei der Kollision mit dem Boden Stop; aufrufen. So würde das Sprite gestoppt, es würde nicht mehr hochspringen und danach kann es wieder gegebenenfalls auf weitere Kräfte reagieren. Soooweit die Theorie.

Geplante Durchführung:

Delphi-Quellcode:
procedure TDragonSprite.DoMove(TimeGap: double);
begin
  inherited DoMove(TimeGap);
  Collision;
end;

procedure TDragonSprite.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
  inherited DoCollision(Sprite,Done);
  if Sprite is TPhysicalBoxSprite then
    Stop;
end;

Problem:


Es kommt zu keiner Kollision! Anscheinend berührt das Sprite beim "Aufprall" nie wirklich das andere Sprite. Keine Ahnung.

Jedenfalls würde ich gerne wissen was ich da machen kann..

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

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

Re: Andorra und Newton

  Alt 22. Jan 2008, 12:47
Was passiert, wenn du beim Aufprall Velocity auf Null setzt?
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
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: Andorra und Newton

  Alt 22. Jan 2008, 13:08
Hi,

Ja das funktioniert. (Obwohl ich dachte, das ich das schon versucht hätte.. ) Das Problem ist halt immernoch das ich die Kollision nicht mitbekomme...

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz