Kolisionsabfrage mit sprite3d?

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Wofür sich mehr Aufwand machen?

wieso mehr aufwand? :?

der radius wird bei der kreiskollision direkt angegeben, also banane..

PS:
die kollisionsroutinen hab ich mal ergänzt.
http://www.purebasic.fr/german/viewtopi ... 572#139572
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Es ist ein unterschied, ob man 1 Wert speichert, oder 2 Werte :mrgreen:
Das Multipliziert mit der Anzahl der möglichen Einheiten ... geht zudem
auch auf den Speicher, wobei das vermutlich nicht das Problem wäre :lol:

es ist dennoch mehr Aufwand :mrgreen:

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

der gag bei der sache ist doch, dass eben deine herangehensweise,
einen kreis per DirectDraw zu zeichnen, wesentlich zu umständlich ist.

ein DirectDraw ist ein extra vorgang.
wenn du für jedes objekt wenn sein sprite dargestellt wird,
einmal StartDrawing/StopDrawing machst, versenkst du deine performance im keller.

wenn du für alle objekte ein einziges StartDrawing/StopDrawing machen möchtest,
hast du den overhead, dass du die schleife zweimal durchgehen musst,
einmal für die sprites und einmal für die kreise.

auch das Drawing komplett um die darstellung zu klammern ist unpraktisch,
weil sprite-befehle innerhalb von Drawing-Blöcken auch zumindest langsam sind.

also, dein ganzer ansatz
> ist dennoch mehr Aufwand :mrgreen:

viel einfacher wäre es, ein zusätzliches sprite als markierung dabei zu zeichnen,
oder sogar verschiedene vorlagen zu haben für markiert/nicht markiert/mouseover.

wie auch immer, für den kreis brauchste keinen radius,
wenn bei professionellen games so ein markierungskreis ist,
ist es meistens ein sprite.

hoast mi? ;)

LG
KG
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Es gibt funktionen, mit welchen man während der Laufzeit Sprites
erstellen kann <)

Sollte man eine Einheisgröße hierfür haben, also praktisch ein Sprites für
alle Einheiten nutzen, hat man natürlich dann hierfür keinen Wert.

Oder der Grafiker macht schon vorher für jede Einheit eine
Markierungsgrafik, dann könnte man die Ausmaße der Sprites nehmen.

An die 2D-Drawing-Befehle denk ich doch garnicht :mrgreen:

Ach ja ... ein Kreis wird nicht daraus definiert, das es mit den 2D-Drawing-
efehlen gemacht wurde. Ob Image, Sprite oder per Drawing ... Kreis is
Kreis :D

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

PMV hat geschrieben:An die 2D-Drawing-Befehle denk ich doch garnicht :mrgreen:
na, dann bin ich ja beruhigt.... :lol:
PMV hat geschrieben:Ach ja ... ein Kreis wird nicht daraus definiert, das es mit den 2D-Drawing-
efehlen gemacht wurde. Ob Image, Sprite oder per Drawing ... Kreis is
Kreis :D
aber wenn für den kreis ein radius gespeichert werden muss,
dann sollte er wohl on-the-fly gezeichnet werden... :mrgreen:

is ja auch banane:
Bei den gängigen Strategiespielen wird ja die selectierte Einheit immer
mit einem Kreis oder Rechteck/ Quadrat umrahmt. Genau diesen Rahmen
kannst du als Kollisionspunkt für die Maus nehmen.
is ja ein netter vorschlag.
aber man braucht keine optische entsprechung für den zu testenden bereich.

viel wichtiger ist es, unangenehme bereichsüberschneidungen zu vermeiden.
nichts ist ärgerlicher, als wenn man eine einheit in einer schlacht nicht anwählen kann,
weil eine andere einheit davor/dahinter rumsteht und die stattdessen ausgewählt wird.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten