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."