Problem mit dem wechseln vom hangeln zum klettern

Posted By: xxxxxxx

Problem mit dem wechseln vom hangeln zum klettern - 08/01/11 18:00

Hi,
ich bastel momentan an einem code für's klettern rum. jetzt möchte ich dass der spieler automatisch beim hangeln erkennt wenn über ihm nicht mehr ist und er (wie auf dem Bild) hochklettern muss.

der spieler hangelt und klettet einwandfrei(abgesehen von den fehlenden animationen^^).
jetzt zum problem: nach dem übergang klettert der spieler nur einen frame danach schießt er in die höhe(da die schwerkraft variable positiv wird, ist aber nicht schlimm/wichtig) und fällt dann wieder ganz normal. Was ich daran nicht verstehe: Jede variable, die ich irgendwie beim übergang veändere wird beim klettern neugesetzt/nicht gebracht. Hier der code:
Code:
if(MoveState == 1)//klettern
{
	vec_set(temp9, vector(0 , -120, my.max_z));
	vec_rotate(temp9,vector(my.pan,my.tilt,my.roll));
	vec_add(temp9,my.x);
			
	vec_set(temp10, vector(0 , -120, my.min_z));
	vec_rotate(temp10,vector(my.pan,my.tilt,my.roll));
	vec_add(temp10,my.x);// wird wie temp12 exakt so wie unten(if(MoveState == 3)) gesetzt
			
	vec_set(temp11, vector(0 , 0, my.max_z));
	vec_rotate(temp11,vector(my.pan,my.tilt,my.roll));
	vec_add(temp11,my.x);
			
	vec_set(temp12, vector(0 , 0, my.min_z));
	vec_rotate(temp12,vector(my.pan,my.tilt,my.roll));
	vec_add(temp12,my.x);
	draw_point3d(temp9,vector(0,0,0),50,25);
	draw_point3d(temp11,vector(0,0,0),50,25);
	draw_point3d(temp10,vector(0,0,0),50,25);
	draw_point3d(temp12,vector(0,0,0),50,25);
			
	DividateFactor = 0;//ich weiß mathematiker würden mich für den namen köpfen^^
	fall_down = 0;
	vec_set(Normale2,nullvector);//wird neu gesetzt
			
	fall_down += c_trace(temp11,temp9,IGNORE_PASSABLE|IGNORE_ME);
	if(HIT_TARGET)
	{
		DividateFactor += 1;
		vec_add(Normale2,hit.nx);
	}
			
	fall_down += c_trace(temp12, temp10,IGNORE_PASSABLE|IGNORE_ME);
	if(HIT_TARGET)
	{
		DividateFactor += 1;
		vec_add(Normale2,hit.nx);
	}
	DividateFactor_Show = DividateFactor;
	if(DividateFactor)
	{
		fall_down /= DividateFactor;
		vec_mul(Normale2,vector(1/DividateFactor,1/DividateFactor,1/DividateFactor));
		vec_to_angle(temp4,Normale2);//temp4 auch neu gestetz
		vec_set(temp5,temp4);
		temp5.x -= 90;//ausrichtung genau so wie unten
		temp5.z = temp5.y;
		temp5.y = 0;
		MoveStateC = 1;
		if(Normale2.z > 0.5)
		{
			MoveStateC = 0;
		}
		if(Normale2.z < -0.5)
		{
			MoveStateC = 2;
		}
	}
	else
	{
		MoveStateC = 0;
	}
...
}

if(MoveState == 2)//Hangeln
{...
if(HIT_TARGET)
{
	vec_set(Normale2, hit.nx);
					
	stop = 1;//sorgt dafür das der rest der vom hangeln nicht mehr ausgeführt wird
	hight = hit.z;
	vec_to_angle(temp4,Normale2);
	vec_set(temp5,temp4);
	temp5.x -= 90;//temp5 wird so gebraucht -> ausrichtung des spielers
	temp5.z = temp5.y;
	temp5.y = 0;
	vec_set(temp15,temp5);
	MoveStateC = 3;
}
else
{
	MoveStateC = 0;
}
...
...}
if(MoveState == 3)
{
	pXent_move(me,nullvector,vector(0,0,10*time_step));
	vec_set(temp5,temp15);
			
	vec_set(temp10, vector(0 , -120, my.min_z));
	vec_rotate(temp10,vector(my.pan,my.tilt,my.roll));
	vec_add(temp10,my.x);
			
	vec_set(temp12, vector(0 , 0, my.min_z));
	vec_rotate(temp12,vector(my.pan,my.tilt,my.roll));
	vec_add(temp12,my.x);
	c_trace(temp12,temp10,IGNORE_ME|IGNORE_PASSABLE);
	if(HIT_TARGET)
	{
		vec_set(Normale2,hit.nx);
	}
	if(my.z-abs(my.min_z) > hight+10&&HIT_TARGET)
	{
		pXent_move(me, nullvector, vector(0,0,my.z-hight+abs(my.min_z)));
		MoveStateC = 1;
		pXent_move(me, vector(0,3*time_step,0),nullvector);
	}
}


MoveState wird immer am ende der schleife(in der sich das ganze übringens befindet) gleich MoveStateC gesetzt, die ganzen temp's sind hilfsvectoren und so bring ich meinen Charakter sonst zum klettern.
Code:
vec_to_angle(temp4,Normale2);
vec_set(temp5,temp4);
temp5.x -= 90;
temp5.z = temp5.y;
temp5.y = 0;
							
MoveStateC = 1;



ich hab echt keine ahnung mehr frown
Danke für alle hilfen schon mal im voraus!
xxxxxxx
Posted By: LPF

Re: Problem mit dem wechseln vom hangeln zum klettern - 08/01/11 19:29

ist das ein seidescroller oder 3d?
Posted By: xxxxxxx

Re: Problem mit dem wechseln vom hangeln zum klettern - 08/01/11 19:39

3d, trotz der irritierenden zeichnung(3d war mir zu kompliziert zu zeichnen^^).
xxxxxxx
Posted By: LPF

Re: Problem mit dem wechseln vom hangeln zum klettern - 08/01/11 19:49

o.k. thanks
soll der player runterfallen können?
und wenn ja wie (auf tastendruck oder wenn die kraft ausgeht usw)
Posted By: xxxxxxx

Re: Problem mit dem wechseln vom hangeln zum klettern - 08/01/11 20:05

auf c soll er runterfallen aber ich glaube nicht dass ich so oft c gedrückt habe^^
xxxxxxx
Posted By: LPF

Re: Problem mit dem wechseln vom hangeln zum klettern - 08/01/11 21:41

ic hab hier den link http://www.mediafire.com/?dx790n5dhtle0ao auf mediafire(modell, level und script) aber ich glaub nicht dass das das ist was du dir vorgestellt hast...

(versuchen kann man's ja mal)
du musst bis jetzt erst auf >0< nach dem level suchen(kurz a+pfeil runter)
Posted By: jane

Re: Problem mit dem wechseln vom hangeln zum klettern - 08/01/11 21:46

Lass doch einfach während des hangelns immer einen trace nach oben durchführen, wenn kein hindernis dann klettern
Posted By: xxxxxxx

Re: Problem mit dem wechseln vom hangeln zum klettern - 08/01/11 22:45

@LPF soweit ich es sehen kann scheit dein script nur auf den einen block ausgerichtet zu sein, aber trotzdem vielen dank.

@jane das mache ich schon, aber mein player klettert erst wenn einer von zwei c_traces trifft, desshalb will ich ihn in die richtige höhe bringen.
xxxxxxx
Posted By: jane

Re: Problem mit dem wechseln vom hangeln zum klettern - 08/01/11 23:40

dann setz doch den tracepunkt der die wand überprüft, wärend des hangelns, über die figur, wenn dann eine wand erkannt wird dann muss das klettern einsetzen, um dann oben auch über die Kante zu kommen, lässt du, wenn keine wand in unmittelbarer nähe mehr gefunden wird weiter in der nötigen playerhöhe tracen um die Oberkante überwinden zu können.
Viell. könntest du mal(fals ich da immer noch falsch liege) ein kurzes fraps-video des Problems machen.

Edit: Für den übergang von hangeln zu klettern wird doch sicher eh eine extra animation gemacht, also kurz nur mit den Händen klettern?
Posted By: xxxxxxx

Re: Problem mit dem wechseln vom hangeln zum klettern - 08/02/11 09:46

Hangeln und klettern funktioniert einwandfrei, der übergang sieht bis zu dem sprung auch gut aus, mir geht es nur darum das der sprung nicht sein soll sondern das das klettern wie vorher eintritt. 0:12 seht ihr den fehler.(steht alles in der video beschreibung und einem kommentar von mir)
lasst euch nicht von den zahlen, dem sch--ß fraps, das ich benutze und den fehlenden animationen verwirren
http://www.youtube.com/watch?v=vBie39c5v8s

ich hoffe ihr findet was an meinem script oben falsch ist.
xxxxxxx
Posted By: LPF

Re: Problem mit dem wechseln vom hangeln zum klettern - 08/02/11 12:19

du könntest ihm beim hüpfen einen schubs nach vornegeben-
pXent_addforcelocal oder so und wenn er wieder runterkommt, also
if(!HIT_TARGET), soll er nach vorne tracen ob da noch eine wand ist und wenn ja , dann kann er sich wieder festhalten oder so

ich meine halt, dass der sprung nicht schlecht aussieht

Posted By: xxxxxxx

Re: Problem mit dem wechseln vom hangeln zum klettern - 08/02/11 14:02

ja der sprung sieht nicht schlecht aus aber er wiederholt sich leider -.-', und dazu kommt noch das ich keine ahnug habe warum er überhaupt insteht und somit kann ich auch den push nach vorne leider schlecht einbauen... frown

EDIT: ich versuche ja über tracen das er sich festhält das komische ist ein tracen ist bedingung das der player aus dem wechselstatus rauskommt beim klettern wird genau dieses tracen benutzt, wenn es triff hält er sich fest. Also einmal trifft es einmal nicht obwohl es gleich ist. crazy

xxxxxxx
Posted By: LPF

Re: Problem mit dem wechseln vom hangeln zum klettern - 08/02/11 14:53

kannst du mal den ganzen code posten, damit ich mich mal spielen kann?
oder die datei(en) auf mediafire stellen?


mir ist gerade was aufgefallen: du arbeitest da ja mit der c_trace entfernung in der fall down variable aber: wenn du nach überqueren der kante bis an die nächste wand trace't dann entscteht da vielleicht ein fehler...

und:er fängt glaube ich unten am felsen wieder zu klettern an...

Posted By: xxxxxxx

Re: Problem mit dem wechseln vom hangeln zum klettern - 08/02/11 15:29

ok. ich werde es morgen uploaden. wink
xxxxxxx
Posted By: xxxxxxx

Re: Problem mit dem wechseln vom hangeln zum klettern - 08/03/11 15:34

-LINK ENTFERNT-
ganznormale WASD steuerung zum klettern ist automatisch beim hangeln ist die steurung verkehrt^^
xxxxxxx
Posted By: xxxxxxx

Re: Problem mit dem wechseln vom hangeln zum klettern - 08/04/11 16:22

@LPF fall_down ist so ca. 55 (bei einer glatten fläche)groß beim klettern wird jedoch wird 55 subtrahiert und das ergebnis wird auf 0-2(od.6)*timestep begrentzt, aber was wahrscheinlich passiert dass im nächsten frame,der dann aus mir unerklärichen gründen dann wieder laufen ect. ist, fall_down übernommen wird, obwohl es eigl auch nicht passieren sollte, und somit der player in die höhe befördert wird...
xxxxxxx
Posted By: xxxxxxx

Re: Problem mit dem wechseln vom hangeln zum klettern - 08/04/11 21:01

Problem gelöst, dumer rechenfehler!^^ tongue
Danke an alle die geholfen haben!!!
xxxxxxx
© 2024 lite-C Forums