ich habe Diesen:
Code:
#include <default.c>
#include <ackphysx.h>


VECTOR dragon_force;
VECTOR rotatedragon_force;


ENTITY* dragon;
ENTITY* helper;
ENTITY* forceobject;

var follow = 0;
var zoomvar = 400;
var gravityvar = -10;
var flyvar=0;
var wingvar=0;

function camera_follow(ENTITY* ent)
{
	while(1) 
	{
		vec_set(camera.x,vector(zoomvar,0,25));  // camera position relative to the player      
		vec_rotate(camera.x,ent.pan); // rotate the camera position with the player
		vec_add(camera.x,ent.x);      // add player position
		vec_set(camera.pan,vector(ent.pan-180,-ent.tilt,0));
		
		//camera.roll = (helper.roll*-1)+90; ////////// sehr realistische Kameraführung... nicht zu empfehlen, aber lustig
		wait(1);
	}
}

action my_dragon()
{
dragon = my;
}


action my_forceobject()
{
forceobject = my;
while(1)
{
vec_set(my.x,vector(2,-60,5));  // camera position relative to the player      
vec_rotate(my.x,dragon.pan); // rotate the camera position with the player
vec_add(my.x,dragon.x);      // add player position
vec_set(my.pan,vector(dragon.pan-180,-dragon.tilt,0));
wait(1);	
}
}



function main()
{  

	physX_open();
	level_load ("Dragontestlevel.wmb");
	
	video_mode=10;//auflösung:11 beste (chiras bildschirm),10 ursprung (cb)
	//video_screen=1;
	screen_size.x = 1000;  
	screen_size.y = 750;
	mouse_mode=4;
	wait(2);
	
	pX_setgravity (vector(0, 0, -9.81)); // set the gravity
	pXent_settype (dragon, PH_RIGID, PH_BOX); // set the physics entity type
	pXent_setmass (dragon, 1); // and its mass
	pXent_setfriction (dragon, 100); // set the friction
	pXent_setdamping (dragon, 10, 200); // set the damping
	pXent_setelasticity (dragon, 1); // set the elasticity
	
	while (1)
	{
		if (key_x)
		{
			if(follow==1)
			{
				follow=0;
			}
			else
			{
				follow=1;
			}
			wait(-1);
		}
		
				 
		rotatedragon_force.x = -4000 * time_step * (key_cur - key_cul); // move the dragon using the cursor keys
		rotatedragon_force.z = 4000 * time_step * (key_cuu - key_cud);
		rotatedragon_force.y = 4000 * time_step * (key_a -key_d); 
		
		dragon_force.x = 0;
		dragon_force.y = 0;
		dragon_force.z = 0; 
		
		//pXent_addcentralforce(dragon, dragon_force); 
		pXent_addtorquelocal (dragon, rotatedragon_force); 
	   
	  
	   if(key_space && wingvar==0)
	   {
	   pXent_addexplosion(dragon, vector(forceobject.x,forceobject.y,forceobject.z),20,30);
	   wingvar=1;
   	}
   	
   	
   	if(key_space)
	   {
	   	pXent_setdamping (dragon,100,200);
		}
		else
		{
			pXent_setdamping (dragon,10,200);
			wingvar=0;
		}
		
		wait (1);
	}
}

action my_uoc()
{ 

	////////////////////////////////////////////////////////////////////////////
	//hilfe für die kamera...                                                 //
	//auf uoc basiert die gesamte zoom und drehsache,da die kamera uoc folgt  //   
	////////////////////////////////////////////////////////////////////////////


	helper = my;
	set(my,PASSABLE);
	set(my,IGNORE_PASSENTS);
	vec_set(camera.pan,vector(my.pan-180,-my.tilt,0));
	camera_follow(me);
	
	while (1)
	{     
		my.x = dragon.x;
		my.y = dragon.y;
		my.z = dragon.z+8;
		
		if(follow==1)
		{
			my.pan = dragon.pan;
			my.tilt = dragon.tilt;
			my.roll = dragon.roll;
		}
		
		if (key_e)
		{
			my.pan += 5 * time_step;
		}
		if (key_q)
		{
			my.pan -= 5 * time_step;
		}
		
		if (key_pressed(74))
		{
			zoomvar += 10 * time_step;
		}
		if (key_pressed(78))
		{
			if (zoomvar>125)
			{
				zoomvar -= 10 * time_step;
			}
		}
		if (key_r)
		{
			my.tilt += 5 * time_step;
		}
		if (key_f)
		{
			my.tilt -= 5 * time_step;
		}
		if (key_g)
		{
			my.pan  = dragon.pan;
		}
		if (key_t)
		{
			my.pan  = dragon.pan;
			my.tilt = dragon.tilt;
			zoomvar = 400;
		}
		
		wait(1);
	}
}


code, der mir einen Drachen (hoffentlich) realistisch bewegt...

abe neuerdings kommt jedes mal beim Starten 2 Fehlermeldungen:
"script crash in camera_follow" und "script crash in my_forceobject"

wo zum teufel kommt das her???????? es hat doch vorher
geklappt...

ich hab gerade rausgefunden, dass die dre zeilen in camera_follow
Code:
vec_rotate(camera.x,ent.pan); // rotate the camera position with the player
		vec_add(camera.x,ent.x);      // add player position
		vec_set(camera.pan,vector(ent.pan-180,-ent.tilt,0));


der grund sind...
aber wo genau und wie man das ausbessert... keine Ahnung

Last edited by LPF; 08/01/11 11:41.

..oooO .........
..(....)..Oooo..
...\..(...(....)..
....\_)....)../..
...........(_/...
...ICH WAR....
........HIER....