Gamestudio Links
Zorro Links
Newest Posts
AlpacaZorroPlugin v1.3.0 Released
by kzhao. 05/20/24 20:05
Free Live Data for Zorro with Paper Trading?
by AbrahamR. 05/18/24 13:28
Change chart colours
by 7th_zorro. 05/11/24 09:25
Data from CSV not parsed correctly
by dr_panther. 05/06/24 18:50
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
3 registered members (Grant, dr_panther, AndrewAMD), 1,379 guests, and 6 spiders.
Key: Admin, Global Mod, Mod
Newest Members
Hanky27, firatv, wandaluciaia, Mega_Rod, EternallyCurious
19051 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Camera-Kollision bei Terrain #321313
04/28/10 07:13
04/28/10 07:13
Joined: Feb 2010
Posts: 40
Germany
G
Grandma Offline OP
Newbie
Grandma  Offline OP
Newbie
G

Joined: Feb 2010
Posts: 40
Germany
Hallo Zusammen,
während meine Kollisionserkennung bei Blöcken und Modellen gut funktioniert, scheitert sie an Terrains ab un zu (vor allem an Steigungen).
Hat mir jemand einen Tipp?
Hier der entsprechende Code:
Code:
void updateCam(ENTITY* ent)
{
	//Positionsparamter
	ANGLE camang;
	vec_set(camang, vector(-180,20,100));
	var camdist = 200;
	var camheight = 10;
	var tiltmin = -80;
	var tiltmax = 80;
	var collshorten = 5;
	
	//Updateparameter
	var angupdate = 0.5;
	var centerupdate = 0.3;
	var distupdate = 0.3;
	var tiltspeed = 10;
	
	//aktuelle Kameraparameter
	ANGLE currang;
	vec_set(currang, ent.pan);
	vec_add(currang, camang);
	VECTOR currcenter;
	vec_set(currcenter, vector(ent.x, ent.y, ent.z));
	var currdist = camdist;
	
	//Temporäres
	ANGLE targetang;
	VECTOR tempvec;
	var tempdist;
	
	proc_mode = PROC_LATE;
	while(1)
	{	
		//Steuern der Höhe mit der Maus
		camang.tilt -= mouse_force.y*tiltspeed*time_step;
		camang.tilt = clamp(camang.tilt, tiltmin, tiltmax);
		
		//Setzen der relativen Zielposition
		vec_set(targetang, ent.pan);
		vec_add(targetang, camang);
		
		//relatives Positionsupdate
		vec_diff(tempvec, targetang, currang);
		vec_scale(tempvec, angupdate*time_step);
		vec_add(currang, tempvec);
		
		//absolutes Positionsupdate
		vec_diff(tempvec, ent.x, currcenter);
		vec_scale(tempvec, centerupdate*time_step);
		vec_add(currcenter, tempvec);
		
		//setzen der resultierenden Position
		vec_set(camera.x, vector(camdist, 0, 0));
		vec_rotate(camera.x, currang);
		vec_add(camera.x, vector(currcenter.x, currcenter.y, currcenter.z+camheight));
		
		//Kollision der Kamera
		you = ent;
		tempdist = c_trace(vector(ent.x, ent.y, ent.z+camheight), camera.x, IGNORE_YOU|USE_POLYGON|IGNORE_PASSABLE);
		tempdist = minv(tempdist, abs(tempdist-collshorten));
		if(tempdist > 0 && currdist >= tempdist)
		{
			currdist = tempdist;
		}else
		{
			if(tempdist > 0)
			{
				currdist += (tempdist-currdist)*distupdate*time_step;
			}else
			{
				currdist += (camdist-currdist)*distupdate*time_step;
			}
		}
		
		//Anpassen der Position bei Kollision
		vec_diff(camera.x, camera.x, vector(currcenter.x, currcenter.y, currcenter.z+camheight));
		vec_normalize(camera.x, currdist);
		vec_add(camera.x, vector(currcenter.x, currcenter.y, currcenter.z+camheight));
		
		//setzen der Blickrichtung
		vec_diff(camera.pan, vector(ent.x, ent.y, ent.z+camheight), camera.x);
		vec_to_angle(camera.pan, camera.pan);
		camera.roll = 0;
		
		wait(1);
	}
}



MfG
Jürgen

Re: Camera-Kollision bei Terrain [Re: Grandma] #321321
04/28/10 09:28
04/28/10 09:28
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Pappenheimer Offline
Senior Expert
Pappenheimer  Offline
Senior Expert

Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Ich weiß nicht, ob es was hilft, aber ich würde im c_trace nicht nach camera.x tracen, sondern noch deren "Standard"position und erst hinterher die Kamera an die ermittelte Position setzen.

Aber wahrscheinlich ist das nicht dein Problem, sondern dass die Kamera bei steilen Hängen seitlich durch das Terrain schaut, dafür müsstest Du 2 weitere Traces und zwar nach rechts und links einbauen, die sicherstellen, dass die Kamera seitlich gesehen weit genug von der Oberfläche entfernt ist.

Re: Camera-Kollision bei Terrain [Re: Pappenheimer] #321327
04/28/10 09:48
04/28/10 09:48
Joined: Aug 2007
Posts: 1,922
Schweiz
Widi Offline
Serious User
Widi  Offline
Serious User

Joined: Aug 2007
Posts: 1,922
Schweiz
Ich benutze eine transparente entity an die ich die Kamera anhänge und bewege diese entity mit c_move. Da kannst du alle Kollissionen einstellen (IGNORE_SPRITES, IGNORE_PASSABLE usw)

Re: Camera-Kollision bei Terrain [Re: Widi] #321372
04/28/10 17:50
04/28/10 17:50
Joined: Feb 2010
Posts: 40
Germany
G
Grandma Offline OP
Newbie
Grandma  Offline OP
Newbie
G

Joined: Feb 2010
Posts: 40
Germany
Ich danke euch beiden..werde mal versuchen euere Vorschläge umzusetzen!
Grüße
Jürgen

Re: Camera-Kollision bei Terrain [Re: Grandma] #325517
05/27/10 00:34
05/27/10 00:34
Joined: May 2010
Posts: 13
I
IvanOFF Offline
Newbie
IvanOFF  Offline
Newbie
I

Joined: May 2010
Posts: 13


Moderated by  HeelX, Spirit 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1