Ballistischer Schuss

Posted By: Patrick92

Ballistischer Schuss - 01/02/14 10:18

Hallo

Ich möchte einen ballistischen Schuss mit c_trace machen, ist das möglich?
Der Schuss sollte von Schwerkraft, Wind und Luftwiderstand beeinflusst werden.
Hat jemand eine Vorlage oder einen Tipp für mich?

Danke im Voraus

Patrick
Posted By: Feindbild

Re: Ballistischer Schuss - 01/02/14 11:36

Dafür musst du dann wohl ein Modell mit CCD benutzen, denke ich.
Posted By: Patrick92

Re: Ballistischer Schuss - 01/02/14 11:55

hab ich schon hätte nur wissen wollen ob es auch mit c_trace möglich ist
Posted By: Ch40zzC0d3r

Re: Ballistischer Schuss - 01/02/14 13:25

Natürlich geht das!
Kurze c_traces anneinander hängen, (am besten mit einer for-schleife OHNE wait) und die endposition immer um ein paar quants verkleinen. Auch Wind und und Luftwiderstand kann man so gut simulieren.
Was du brauhst sind einigermaßen gute Mathematikkentnisse.
Posted By: Feindbild

Re: Ballistischer Schuss - 01/02/14 13:52

Originally Posted By: Ch40zzC0d3r
Natürlich geht das!
Kurze c_traces anneinander hängen, (am besten mit einer for-schleife OHNE wait) und die endposition immer um ein paar quants verkleinen. Auch Wind und und Luftwiderstand kann man so gut simulieren.

Klar geht das, aber frisst das nicht enorm an der Performance?
Posted By: Ch40zzC0d3r

Re: Ballistischer Schuss - 01/02/14 16:27

denke nicht dass das mehr frisst als ein langer trace, es gibt eben ein bissl mehr overhead wegen den argumenten usw im memory.
Außerdem kommt es eben drauf an wie viele er simulieren möchte, bei einem 32 Spieler Mutliplayergame sollte man da schonmal überlegen ob sich das lohnt.
Posted By: TehV

Re: Ballistischer Schuss - 01/04/14 12:26

Originally Posted By: Feindbild
Originally Posted By: Ch40zzC0d3r
Natürlich geht das!
Kurze c_traces anneinander hängen, (am besten mit einer for-schleife OHNE wait) und die endposition immer um ein paar quants verkleinen. Auch Wind und und Luftwiderstand kann man so gut simulieren.

Klar geht das, aber frisst das nicht enorm an der Performance?


Ich bin mir ziemlich sicher dass es weniger Performance frisst als die Physik-Engine, da die Physikengine nicht nur Geschwindigkeit und Position sondern auch Rotation und Kollisionsdetektion am ganzen Modell durchführt.
Mit einer Reihe von c_traces hat man nur Position/Geschwindigkeit und Kollision eines 'Strahls' mit einer Oberfläche anstelle von einer Fläche mit einer Fläche.
Posted By: Patrick92

Re: Ballistischer Schuss - 01/07/14 11:56

ich hab jetzt ein modell genommen und der kugel einen kurzen(5 qunats) c_trace hinzugefügt und lass sie mit c_move(my,vector(my.skill1*time_step,0,0),vector(WIND[0],WIND[0],-10*time_step),IGNORE_PASSABLE+IGNORE_ME+IGNORE_MODELS);
in die gewünschte richtung fliegen
Posted By: Feindbild

Re: Ballistischer Schuss - 01/07/14 13:19

Das ist jetzt aber doppelt gemoppelt - entweder Entity mit Collision-Event oder direkt in einem Durchgang alle Traces laugh
Posted By: the_clown

Re: Ballistischer Schuss - 01/07/14 13:58

c_move zu benutzen UND traces zu machen ist wie mein Vorposter schon sagt völliger Overkill. Eine Entity zu benutzen ist allerdings keine schlechte Idee, das macht Tracer Effekte und ähnliches weitaus einfacher.
Wie ich es schon öfter gemacht habe (auch in Systemen mit simulierter Ballistik und Oberflächenpenetration):

1) Eine Projektil Entity erzeugen. Diese ist passierbar, in der Regel unsichtbar und nicht allzu groß (die Größe ist aber unglaublich egal)
2) In jedem Frame die neue Position des Projektils anhand der Ballistik berechnen
3) Einen trace zwischen der berechneten Position und der aktuellen Entity Position machen.
4) Wenn der trace nichts trifft, das Projektil auf die neue Position bewegen. NICHT mit c_move allerdings, sondern einfach mit Vektorfunktionen (vec_set, etc). Trifft der trace ein Hindernis, so hat man etwas getroffen und verfährt wie man möchte.
Posted By: Patrick92

Re: Ballistischer Schuss - 01/07/14 16:19

the clown ich werds mal brobiern wie du gesagt hast
und noch was wie könnte man machen das der schuss eine durchschlagskraft hatt?
also durch dühne mauern geht aber in dicken stecken beleibt?
mein level wird glaub ich total aus Entitys werdn solte man dan jeden obiekt einen wiederstandswert zuweisen und der wird von der kraft des schusses abgezogen odr gibs da auch einen weg zum rechen?
Posted By: Ch40zzC0d3r

Re: Ballistischer Schuss - 01/07/14 17:11

Na klar geht das.
Du musst ja eh die texture data auslesen um zu wissen was du für ein impact effect erstellen musst, also weißt du auch aus was für einem stoff die wand besteht. Du subtrahierst einfach hit.nx von hit.x um es durch die mauer zu bewegen. Das ganze muss öfters gemacht werden und somit kann man die Durchschlagskarft der Kugel simulieren.
Posted By: Patrick92

Re: Ballistischer Schuss - 01/07/14 17:16

ok ich werds versuchen
das mit dem objekt weiterschieben funktioniert schon mal laugh
Posted By: Patrick92

Re: Ballistischer Schuss - 01/07/14 17:39

und noch was kann man mit hit.nx auch berechnen ob es ein querschläger ist oder nicht? weil mit bounce macht es immer einen querschläger? kann man das irgentwie eingrenzen das es nur bei sehr flachen winkel einen macht?
Posted By: Kartoffel

Re: Ballistischer Schuss - 01/07/14 17:58

vektoren normalisieren (länge 1) + dot product wäre mein erster lösungsvorschlag
kann aber auch sein, dass es in dem fall eleganter geht
Posted By: Ch40zzC0d3r

Re: Ballistischer Schuss - 01/07/14 18:10

bounce funktioniert wunderbar, Kartofells Lösung aber natürlich auch. Lasse bounce doch mal ausgeben. Du kannst auch zum Spaß einfach selbst ne func schreiben die das simpel löst mit winkel < 20° -> ausgangswinkel = -winkel.
© 2024 lite-C Forums