Wo kahm das den her?

Posted By: Marc

Wo kahm das den her? - 05/24/06 19:35

Hallo, ich bins mal wieder.

Ich hätte da 3 Fragen:

1. Wie kann ich machen, dass eine Entity die Richtung eines Projektils feststellt, das sie aber schon getroffen hat und dan verschwunden ist?

2. Ich hab glaub ich schon mal son AUM gelesen wo was mit Trefferzonen drinstand..
Ich wolt gern wissen wie das geht, das Kugeln eine Figur polygongenau (also zwischen Beine durch schadet nicht) treffen.

3. Wie geht das mit den Trefferzonen? Also Knieschuss AUA!....Kopfschuss TOT!

mfG Marc
Posted By: Artus

Re: Wo kahm das den her? - 05/24/06 20:02

zu Frage 2: AUM 20
Posted By: Marc

Re: Wo kahm das den her? - 05/24/06 20:13

hmmmm... danke erstmal, aber das ist nicht ganz das was ich suche....
kann man den irgentwie feststellen welches Polygon genau getroffen wurde?
Posted By: Hummel

Re: Wo kahm das den her? - 05/25/06 08:49

Hi,
na das AUM 20 bezieht sich eher auf Frage 3...
und zu 2. würde ich sagen bewegst du einfach die Kugel
mit c_move()
Warum brauchst du eigentlich das genaue Polygon tut es das Vertex
nicht auch, so arbeitet nämlich das AUM20 Skript...?
Posted By: Marc

Re: Wo kahm das den her? - 05/25/06 11:29

Ja schön, das Vertex geht natürlich auch...

aber der AUM20 Skript basiert ja nur auf der Höhe der Einschlagstelle.
(jedenfals hab ich das so verstanden)
Und nun kommt es mier vor als ob der Skript zwar zwischen Bein und Kopfschuss unterscheiden kann, aber nicht zwischen Arm und Bauchschuss.

ach noch etwas:

Kennt einer den Befehl der durch die Trace Anweisung die Nummer des getroffene Polygons (oder auch Vertex) zurückliefert?
Posted By: Xarthor

Re: Wo kahm das den her? - 05/25/06 11:34

Wenn du A6 benutzt, und die ganzen c_ befehle benutzen kannst:
nutze c_trace(vector_from,vector_to,var mode);
mit GET_HITVERTEX im mode.
Dann liefert der trace den nächsten vertex zum einschlagspunkt zurück. (variable hitvertex wird verändert)
Posted By: Marc

Re: Wo kahm das den her? - 05/25/06 12:41

Ich verstehe was ihr meind mit Trace und so, aber ich hab nochne kleine Frage:
vector_to ist ja Endziehl des Strahls, aber beim festlegen von diesem hab ich noch Probleme.
Per vec_set setze ich ihn auf meine Position, aber wie geb ich hm meine Winkel?
Posted By: Marc

Re: Wo kahm das den her? - 05/25/06 14:30

Eins noch:

Ich komme mit Trace nun klar, allerdings benutze ich eine Passable Entity die das Ziel des Trace-Strahls darstellt, ganz einfach weil ich nicht weiss wie ich auch den Winkel des to_vektors ändern soll.

Trace ist zwar Polygongenau, aber wenn ich meiner Figur auf den Kopf ziehle und sie sich dan duckt, dan treffe ich sie trotzdem...

Was mach ich da nur falsch?
Posted By: PHeMoX

Re: Wo kahm das den her? - 05/25/06 15:01

Ich könnte es falsch haben, aber schau mal nach bei c_updatehull() ins handbuch, trace nutzt soweit ich weiss, nur dem ersten frame von ein animiertes model, also musst du beim ducken ein anderes frame zuweisen das der engine nutzen soll beim collisionsabfrage beispielsweise traces ...

Mfg,
Posted By: Xarthor

Re: Wo kahm das den her? - 05/25/06 15:27

@Marc: Phemox hat recht. Du musst bei deinem gegner wenn er seine animation änder ein c_updatehull(); aufrufen und seine polygon genaue kollision anschalten (falls du das nicht schon hast).

Wegen dem trace:
Bei 1st Person:
Code:

var shoot_from[3];
var shoot_to[3];

function shoot_func()
{
shoot_from.x = screen_size.x / 2;
shoot_from.y = screen_size.y / 2;
shoot_from.z = 50;

vec_set(shoot_to,shoot_from);
shoot_to.z = 5000;

vec_for_screen(shoot_from,camera);
vec_for_screen(shoot_to,camera);

//hier kommt nun dein trace
...



Oder ist dein Spiel 3rd Person?
Posted By: Marc

Re: Wo kahm das den her? - 05/25/06 17:13

Vielen Dank für den schicken Code,

eigentlich ist mein Spiel 3rd Person, aber das hier geht auch.
Ich kann übrigens jetzt die Nummer des Vertex bestimmen, der dem Einschlagsort am nächsten ist.
Leider muss dafür

if(vec_dist(target,posi)>20){vertio+=1;}
if(vec_dist(target,posi)<20){vertio=vertio;}//kommt später was rein

//target ist von trace
// posi ist Vertexposition
// vertio ist Vertexnummer


oft wiederholt werden.

Ich hab das Problem gelöst, indem ich diesen beiden zeilen etwa 20 untereinander geschrieben habe, das klapt sieht aber im Code doof aus, kann man das irgendwie abkürtzen?

p.s.

Wie mach ich das mit c_updatehull() (in der Manual Datei find ich nichts)?
UNd was genau mach ich die polyg. genaue Kollision?
Posted By: Xarthor

Re: Wo kahm das den her? - 05/25/06 19:16

Um den nächstliegenden vertex zu bestimmen (nach dem trace einfügen):
Code:

...
//hier kommt dein trace

var target_pos[3];
var vertex_pos[3];

var max_vertex;
var current_vertex;
var hit_distance;

vec_set(target_pos,target);
max_vertex = ent_vertices(my); //speicher die maximale anzahl der vertex
current_vertex = 0;
hit_distance = 1000;
while(current_vertex < max_vertex)
{
vec_for_vertex(vertex_pos,my,current_vertex);
if(vec_dist(vertex_pos,target_pos) < hit_distance)
{ hit_distance = vec_dist(vertex_pos,target_pos); }
current_vertex += 1;
}


Dieser code is jedoch recht langsam und der mitgelieferte trace mode "get_hitvertex" ist immer noch die beste lösung.
Posted By: Cemper

Re: Wo kahm das den her? - 05/26/06 09:14

@Marc: Du kannst das mit ner Schleife abkürzen.
© 2024 lite-C Forums