Fallen einfach fallen

Posted By: Memorix101

Fallen einfach fallen - 06/30/11 17:59

Hi nochmal,

ich wollte nun wen mein Actor in der Luft ist das er wenn er "fällt" die Fallen animation aktivieren. Diese soll aus gelöst werden wenn der Actor werder ein Modell noch einen Block berührt. Ich habe es versuch als Event zuschreiben doch ausirgen einem grund funkt es nicht. Als test habe ich erstmal ein Shot geräuch genommen. dies sollte Theoretisch wenn ich auf dem Boden (Block/Modell) Stehe dauerhaft ertönenm tut er aber nicht warum ?

Könnte jemand mir bitte schreiben wie er dieses Event schreiben würde ?!

Danke
Posted By: Superku

Re: Fallen einfach fallen - 06/30/11 18:08

Events eignen sich dafür kaum, bessere wäre es, die Animation oder so etwas wie my.anim_state in deinem Schwerkraft-Code zu setzen, bspw. wie folgt:

Code:
if(result > my.skill4 || my.skill2 > 0) {
	
	my.skill2 -= gravity_acceleration*time_step;
	my.skill2 = maxv(my.skill2,-80);
	c_move(me,nullvector,vector(0,0,my.skill2*time_step),GLIDE);

	my.skill3 += 10*time_step;
	my.skill3 %= 100;
	ent_animate(me,"fallen",my.skill3,ANM_CYCLE);
}
else {
	geh-/renn-animation hier
}


Posted By: Memorix101

Re: Fallen einfach fallen - 06/30/11 18:33

Also da passiert nicht die fallen animation vom simplysid.mdl kommt nicht
ich habe bei else in der zeile das drinne
Code:
ent_animate(me,"stand",anim_percent,ANM_CYCLE); // play the "stand" animation

ich hoffe das war in deinem sinne richtig
Posted By: Superku

Re: Fallen einfach fallen - 06/30/11 18:35

Warum sollte das nicht funkionieren?
Für "fallen" musst du natürlich den korrekten Szenennamen deiner Spielfigur eingeben.
Posted By: Memorix101

Re: Fallen einfach fallen - 06/30/11 18:42

ok es geht jedoch mach mir der teil deines actor scripts probleme
Code:
my.z = maxv(my.z,my.skill3+my.skill4-my.min_z); // make sure player's feet stay above ground


den wenn ich an ein Modell stoße gleite ich noch oben wie mit einem lift
Posted By: Superku

Re: Fallen einfach fallen - 06/30/11 18:53

Hm ja, gut möglich, habe den Code nie richtig getestet. Ersetze einfach mal
result = c_trace(my.x,vector(my.x,my.y,my.z-200),IGNORE_ME | IGNORE_PASSABLE | USE_BOX);
durch
result = c_trace(my.x,vector(my.x,my.y,my.z-200),IGNORE_ME | IGNORE_PASSABLE)+my.min_z;
© 2024 lite-C Forums