Gamestudio Links
Zorro Links
Newest Posts
Blobsculptor tools and objects download here
by NeoDumont. 03/28/24 03:01
Issue with Multi-Core WFO Training
by aliswee. 03/24/24 20:20
Why Zorro supports up to 72 cores?
by Edgar_Herrera. 03/23/24 21:41
Zorro Trader GPT
by TipmyPip. 03/06/24 09:27
VSCode instead of SED
by 3run. 03/01/24 19:06
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
3 registered members (Edgar_Herrera, VoroneTZ, Akow), 973 guests, and 4 spiders.
Key: Admin, Global Mod, Mod
Newest Members
sakolin, rajesh7827, juergen_wue, NITRO_FOREVER, jack0roses
19043 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
shape soll sich mitdrehn #451693
05/16/15 19:28
05/16/15 19:28
Joined: Oct 2008
Posts: 341
R
ratz Offline OP
Senior Member
ratz  Offline OP
Senior Member
R

Joined: Oct 2008
Posts: 341
Hallo

Wie ist es möglich ein Shape mitdrehn zulassen ,welches wiederrum ein Zahnrad ist ?

Code:
//////////////

action spin_kreuz1()
{	
	ENTITY* gear8 = ent_create("add_shape2.mdl",vector(120,0,0),NULL);
	set(gear8, VISIBLE);
	
	c_setminmax(me);
	
	pXent_settype(me,PH_RIGID,PH_SPHERE);
	
	var i;
	for (i=10; i<360; i+=72) {
		gear8.pan = i;
		pXent_addshape(me, gear8, PH_BOX);
	}

	pXent_removeshape(my, 0);
	//
	
	var Motion[6] = { 0,0,0,0,0,NX_D6JOINT_MOTION_FREE};

	pXcon_add(PH_6DJOINT,me,NULL,0);

	pXcon_set6djoint(me,Motion,NULL);
}

//////////////

action spin_kreuz2()
{	
	ENTITY* gear8 = ent_create("add_shape2.mdl",vector(-120,0,0),NULL);
	set(gear8, VISIBLE);
	
	c_setminmax(me);
	
	pXent_settype(me,PH_RIGID,PH_SPHERE);
	
	var i;
	for (i=10; i<360; i+=72) {
		gear8.pan = i;
		pXent_addshape(me, gear8, PH_BOX);
	}

	pXent_removeshape(my, 0);
	//
	
	var Motion[6] = { 0,0,0,0,0,NX_D6JOINT_MOTION_FREE};

	pXcon_add(PH_6DJOINT,me,NULL,0);

	pXcon_set6djoint(me,Motion,NULL);
}

//////////////

action spin_kreuz3()
{	
	ENTITY* gear8 = ent_create("add_shape2.mdl",vector(0,120,0),NULL);
	set(gear8, VISIBLE);
	
	c_setminmax(me);
	
	pXent_settype(me,PH_RIGID,PH_SPHERE);
	
	var i;
	for (i=10; i<360; i+=72) {
		gear8.pan = i;
		pXent_addshape(me, gear8, PH_BOX);
	}

	pXent_removeshape(my, 0);
	//
	
	var Motion[6] = { 0,0,0,0,0,NX_D6JOINT_MOTION_FREE};

	pXcon_add(PH_6DJOINT,me,NULL,0);

	pXcon_set6djoint(me,Motion,NULL);
}

//////////////

action spin_kreuz4()
{	
	ENTITY* gear8 = ent_create("add_shape2.mdl",vector(0,-120,0),NULL);
	set(gear8, VISIBLE);
	
	c_setminmax(me);
	
	pXent_settype(me,PH_RIGID,PH_SPHERE);
	
	var i;
	for (i=10; i<360; i+=72) {
		gear8.pan = i;
		pXent_addshape(me, gear8, PH_BOX);
	}

	pXent_removeshape(my, 0);
	//
	
	var Motion[6] = { 0,0,0,0,0,NX_D6JOINT_MOTION_FREE};

	pXcon_add(PH_6DJOINT,me,NULL,0);

	pXcon_set6djoint(me,Motion,NULL);
}


action test_block()
{
  pXent_settype(me,PH_RIGID,PH_CONVEX);
	
  ENTITY* kreuz1 = ent_create ("kreuz.mdl",  vector(120,0,0), spin_kreuz1);
  ENTITY* kreuz2 = ent_create ("kreuz.mdl",  vector(-120,0,0), spin_kreuz2);
  ENTITY* kreuz3 = ent_create ("kreuz.mdl",  vector(0,120,0), spin_kreuz3);
  ENTITY* kreuz4 = ent_create ("kreuz.mdl",  vector(0,-120,0), spin_kreuz4);
 
  c_setminmax(me);
  
  pXent_setbodyflag(me,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
	
	
	// Steuerung Schleife
	ANGLE angle;
	
	while(1) 
	{
		if (key_j) 
		{
			angle.pan += -8* time_step;  	 
			pXent_rotate(me, nullvector, vector(angle.pan,0,0));	
		}
		
		
		if (key_k) 
		{
			angle.pan += 8* time_step;  	 
			pXent_rotate(me, nullvector, vector(angle.pan,0,0));	
		}
		
		wait(1);
	}



-> mit k und j drehe ich zwar das object aber nicht die
shapes


-> wie drehe ich das GANZE jetz sammt shape+shape_action?



Last edited by ratz; 05/16/15 19:55.
Re: shape soll sich mitdrehn [Re: ratz] #451699
05/17/15 17:48
05/17/15 17:48
Joined: Oct 2008
Posts: 341
R
ratz Offline OP
Senior Member
ratz  Offline OP
Senior Member
R

Joined: Oct 2008
Posts: 341
so .... wink

https://www.youtube.com/watch?v=nzUzH1KbBwo

Code:
action spin_wheel1()
{	
   //ENTITY* mechanik2 = ent_create ("kreuz.mdl", vector(me.x+120,0,10), my_wheel1);
   
	ENTITY* gear1 = ent_create("add_shape2.mdl",vector(me.x+120,0,0),NULL);
	set(gear1, VISIBLE);
	
	c_setminmax(me);
	
	pXent_settype(me,PH_RIGID,PH_SPHERE);
	
	var i;
	for (i=10; i<360; i+=72) {
		gear1.pan = i;
		pXent_addshape(me, gear1, PH_BOX);
	}

	pXent_removeshape(my, 0);
	//
	
	var Motion[6] = { 0,0,0,0,0,NX_D6JOINT_MOTION_FREE};

	pXcon_add(PH_6DJOINT,me,NULL,0);
   
	pXcon_set6djoint(me,Motion,NULL);
}


action spin_wheel2()
{	
 //  ENTITY* mechanik2 = ent_create ("kreuz.mdl", vector(me.x-120,0,10), my_wheel1);

	ENTITY* gear2 = ent_create("add_shape2.mdl",vector(me.x-120,0,0),NULL);
	set(gear2, VISIBLE);
	
	c_setminmax(me);
	
	pXent_settype(me,PH_RIGID,PH_SPHERE);
	
	var i;
	for (i=10; i<360; i+=72) {
		gear2.pan = i;
		pXent_addshape(me, gear2, PH_BOX);
	}

	pXent_removeshape(my, 0);
	//
	
	var Motion[6] = { 0,0,0,0,0,NX_D6JOINT_MOTION_FREE};

	pXcon_add(PH_6DJOINT,me,NULL,0);
   
	pXcon_set6djoint(me,Motion,NULL);
}

action spin_wheel3()
{	
  // ENTITY* mechanik2 = ent_create ("kreuz.mdl", vector(me.x+120,0,10), my_wheel1);

	ENTITY* gear3 = ent_create("add_shape2.mdl",vector(0,me.y+120,0),NULL);
	set(gear3, VISIBLE);
	
	c_setminmax(me);
	
	pXent_settype(me,PH_RIGID,PH_SPHERE);
	
	var i;
	for (i=10; i<360; i+=72) {
		gear3.pan = i;
		pXent_addshape(me, gear3, PH_BOX);
	}

	pXent_removeshape(my, 0);
	//
	
	var Motion[6] = { 0,0,0,0,0,NX_D6JOINT_MOTION_FREE};

	pXcon_add(PH_6DJOINT,me,NULL,0);
   
	pXcon_set6djoint(me,Motion,NULL);
}

action spin_wheel4()
{	
  // ENTITY* mechanik2o = ent_create ("add_shape2.mdl", vector(me.x+120,0,10), my_wheel1);

	ENTITY* gear4 = ent_create("add_shape2.mdl",vector(0,me.y-120,0),NULL);
	set(gear4, VISIBLE);
	
	c_setminmax(me);
	
	pXent_settype(me,PH_RIGID,PH_SPHERE);
	
	var i;
	for (i=10; i<360; i+=72) {
		gear4.pan = i;
		pXent_addshape(me, gear4, PH_BOX);
	}

	pXent_removeshape(my, 0);
	//
	
	var Motion[6] = { 0,0,0,0,0,NX_D6JOINT_MOTION_FREE};

pXcon_add(PH_6DJOINT,me,NULL,0);
   
 pXcon_set6djoint(me,Motion,NULL);
	
	///////////////////////////////////////
	
//	pXent_setbodyflag(me,NX_BF_KINEMATIC,1);
	
///	while (1)
//{
		
	
// angle.pan += -1*time_step;
// pXent_rotate(me, nullvector, vector(angle.pan,0,0));
			
// wait(1);
// }
 
 //
}





///////////////////////////////////////////////////////







action mechanik_5()
{
	while (1)
{

 my.pan += 1;
 wait(1);
 }
 
	 ent_create("kreuz.mdl",vector(me.x+120,0,0),NULL);
    
	

}

action show_cross()
{
	
 ENTITY* cross1 = ent_create("add_shape2.mdl",vector(me.x+120,0,0), NULL);
 set(cross1, VISIBLE);
  
  
  	c_setminmax(me);
	
	pXent_settype(me,PH_RIGID,PH_SPHERE);
	
		var i;
	for (i=10; i<360; i+=72) {
		cross1.pan = i;
		pXent_addshape(me, cross1, PH_BOX);
	}
	
  	pXent_removeshape(my, 0);
	//
	
//	var Motion[6] = { 0,0,0,0,0,NX_D6JOINT_MOTION_FREE};

//	pXcon_add(PH_6DJOINT,me,NULL,0);
   
//	pXcon_set6djoint(me,Motion,NULL);
	
	pXent_setbodyflag(me,NX_BF_KINEMATIC,1);
	
	while (1)
{
 angle.pan += -8* time_step;
 pXent_rotate(me, nullvector, vector(angle.pan,0,0));
			
 wait(1);
 }
 
}





action test_block()
{

  pXent_settype(me,PH_RIGID,PH_CONVEX);
	
	
 ENTITY* mechanik1 = ent_create ("block.mdl", vector(me.x,0,0), spin_wheel1);
 ENTITY* mechanik2 = ent_create ("block.mdl", vector(me.x,0,0), spin_wheel2);
 ENTITY* mechanik3 = ent_create ("block.mdl", vector(me.x,0,0), spin_wheel3);
 ENTITY* mechanik4 = ent_create ("block.mdl", vector(me.x,0,0), spin_wheel4);
 
 //ENTITY* mechanik5 = ent_createlocal ("block.mdl", vector(me.x,0,0), show_cross);
 

  

// ENTITY* mechanik6 = ent_create ("kreuz.mdl", vector(me.x,0,0), mechanik_5);
// ENTITY* mechanik7 = ent_create ("kreuz.mdl", vector(me.x,0,0), mechanik_5);
// ENTITY* mechanik8 = ent_create ("kreuz.mdl", vector(me.x 0,0), mechanik_5);

  
  
  c_setminmax(me);
  
  pXent_setbodyflag(me,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung

  pXent_setbodyflag(mechanik1,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
  pXent_setbodyflag(mechanik2,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
  pXent_setbodyflag(mechanik3,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
  pXent_setbodyflag(mechanik4,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
  
 // pXent_setbodyflag(mechanik5,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
 	
	// Steuerung Schleife
  	
	while(1) 
	{
		
	  	
        
		if (key_j) 
		{
			angle.pan += -8* time_step;  	 
			pXent_rotate(me, nullvector, vector(angle.pan,0,0));
			
		
		
			pXent_rotate(mechanik1, nullvector, vector(angle.pan,0,0));	
			pXent_rotate(mechanik2, nullvector, vector(angle.pan,0,0));	
			pXent_rotate(mechanik3, nullvector, vector(angle.pan,0,0));	
			
			pXent_rotate(mechanik4, nullvector, vector(angle.pan,0,0));	
			

		}
		
		
		if (key_k) 
		{
			angle.pan += 8* time_step;  	 
			pXent_rotate(me, nullvector, vector(angle.pan,0,0));
				
        
		
	      pXent_rotate(mechanik1, nullvector, vector(angle.pan,0,0));	
			pXent_rotate(mechanik2, nullvector, vector(angle.pan,0,0));	
			pXent_rotate(mechanik3, nullvector, vector(angle.pan,0,0));	
			pXent_rotate(mechanik4, nullvector, vector(angle.pan,0,0));	
         
       
		}
		
		wait(1);     	
  }


}



die shapes drehen sich mit , aber jetz mochte ich dass dass Zahnrad um das object dreht und um sich selbst ...

problem:

um das zahnrad um ein object zu drehen, wird es a von vector (0.0.0)
erstellt .. um das zahnrad aber um sich selbst zu drehen muss der Vector in test_block() auf me.x+120,0,0 gestellt werden, da das zahnrad sonst zu vector 0.0.0 hinwill und dann nicht mehr richtig laüft - dann dreht es sich aber nichtmehr um das object ...

-> könnt ihr mir helfen ?

und: wie kann ich mein ent_create(shape, vector(me.x,0,0) mechanik 1)
zu einem normalen Entity machen? -> nur wenn das Shape ein Physic Ojeckt ist wird es richtig positioniert .. (ich brache aber einmal die Shapes) und einmal was "sichtbares" .. nur das "sichtbare" wird nicht dargestellt -> z.b. kreuz.mdl

Last edited by ratz; 05/17/15 18:10.
Re: shape soll sich mitdrehn [Re: ratz] #451711
05/17/15 21:57
05/17/15 21:57
Joined: Oct 2008
Posts: 341
R
ratz Offline OP
Senior Member
ratz  Offline OP
Senior Member
R

Joined: Oct 2008
Posts: 341
HABS !!!!

Code:
ANGLE angle;



action my_wheel1()
 {
 	
	pXent_settype(me,PH_RIGID,PH_CONVEX);
  
	ENTITY* shape1 = ent_create("add_shape2.mdl",vector(120,0,0),NULL); // Simple box für die Zähne
	set(shape1, VISIBLE);
	
   c_setminmax(me);
	
	// Insgesamt 5 Zähne werden Gebraucht mit 10° anfangs Winkel

	var i;
	for (i=10; i<360; i+=72) {
		//shape1.x=30;
		shape1.pan = i;
		pXent_addshape(me, shape1, PH_BOX);
	}

	pXent_removeshape(me, 0); // entfernt eine zuvor hinzugefügte PH_SPHERE Form 
	
	pXent_setbodyflag(me,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
		pXent_setbodyflag(shape1,NX_BF_KINEMATIC,1); 
	
	// Steuerung Schleife
	ANGLE angle;
	
	while(1) 
	{
	
			angle.pan += -4* time_step;  	 
			pXent_rotate(shape1, vector(me.x+120,0,0), vector(angle.pan,0,0));	
		
		
		wait(1);
	}
}

action my_wheel2()
 {
 	
	pXent_settype(me,PH_RIGID,PH_CONVEX);
  
	ENTITY* shape2 = ent_create("add_shape2.mdl",vector(-120,0,0),NULL); // Simple box für die Zähne
	set(shape2, VISIBLE);
	
   c_setminmax(me);
	
	// Insgesamt 5 Zähne werden Gebraucht mit 10° anfangs Winkel

	var i;
	for (i=10; i<360; i+=72) {
		//shape1.x=30;
		shape2.pan = i;
		pXent_addshape(me, shape2, PH_BOX);
	}

	pXent_removeshape(me, 0); // entfernt eine zuvor hinzugefügte PH_SPHERE Form 
	
	pXent_setbodyflag(me,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
		pXent_setbodyflag(shape2,NX_BF_KINEMATIC,1); 
	
	// Steuerung Schleife
	ANGLE angle;
	
	while(1) 
	{
	
			angle.pan += -4* time_step;  	 
			pXent_rotate(shape2, vector(-120,0,0), vector(angle.pan,0,0));	
		
		
		wait(1);
	}
}



action my_wheel3()
 {
 	
	pXent_settype(me,PH_RIGID,PH_CONVEX);
  
	ENTITY* shape3 = ent_create("add_shape2.mdl",vector(0,120,0),NULL); // Simple box für die Zähne
	set(shape3, VISIBLE);
	
   c_setminmax(me);
	
	// Insgesamt 5 Zähne werden Gebraucht mit 10° anfangs Winkel

	var i;
	for (i=10; i<360; i+=72) {
		//shape1.x=30;
		shape3.pan = i;
		pXent_addshape(me, shape3, PH_BOX);
	}

	pXent_removeshape(me, 0); // entfernt eine zuvor hinzugefügte PH_SPHERE Form 
	
	pXent_setbodyflag(me,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
		pXent_setbodyflag(shape3,NX_BF_KINEMATIC,1); 
	
	// Steuerung Schleife
	ANGLE angle;
	
	while(1) 
	{
	
			 angle.pan += -4* time_step;  	 
			pXent_rotate(shape3, vector(0,120,0), vector(angle.pan,0,0));	
		
		
		wait(1);
	}
}

action my_wheel4()
 {
 	
	pXent_settype(me,PH_RIGID,PH_CONVEX);
  
	ENTITY* shape4 = ent_create("add_shape2.mdl",vector(0,-120,0),NULL); // Simple box für die Zähne
	set(shape4, VISIBLE);
	
   c_setminmax(me);
	
	// Insgesamt 5 Zähne werden Gebraucht mit 10° anfangs Winkel

	var i;
	for (i=10; i<360; i+=72) {
		//shape1.x=30;
		shape4.pan = i;
		pXent_addshape(me, shape4, PH_BOX);
	}

	pXent_removeshape(me, 0); // entfernt eine zuvor hinzugefügte PH_SPHERE Form 
	
	pXent_setbodyflag(me,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
		pXent_setbodyflag(shape4,NX_BF_KINEMATIC,1); 
	
	// Steuerung Schleife
	ANGLE angle;
	
	while(1) 
	{
	
		 	angle.pan += -4* time_step;   
			pXent_rotate(shape4, vector(0,-120,0), vector(angle.pan,0,0));	
		
		
		wait(1);
	}
}



action test_block()
{

  pXent_settype(me,PH_RIGID,PH_CONVEX);
	
	
 ENTITY* mechanik1 = ent_create ("block.mdl", vector(0,0,0), my_wheel1);
 ENTITY* mechanik2 = ent_create ("block.mdl", vector(0,0,0), my_wheel2);
 ENTITY* mechanik3 = ent_create ("block.mdl", vector(0,0,0), my_wheel3);
 ENTITY* mechanik4 = ent_create ("block.mdl", vector(0,0,0), my_wheel4);
  
  c_setminmax(me);
  
  pXent_setbodyflag(me,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung

  pXent_setbodyflag(mechanik1,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
  pXent_setbodyflag(mechanik2,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
  pXent_setbodyflag(mechanik3,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
  pXent_setbodyflag(mechanik4,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
  
 // pXent_setbodyflag(mechanik5,NX_BF_KINEMATIC,1); // aktiviert kinematische Steuerung
 	
	// Steuerung Schleife
  	
	while(1) 
	{
		   angle.pan += -3* time_step;  
		   
	  		pXent_rotate(mechanik1, nullvector, vector(angle.pan,0,0));	
		   pXent_rotate(mechanik2, nullvector, vector(angle.pan,0,0));	
		   pXent_rotate(mechanik3, nullvector, vector(angle.pan,0,0));	
			pXent_rotate(mechanik4, nullvector, vector(angle.pan,0,0));	
					
        
	
		
		wait(1);     	
  }


}



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