|
|
|
Help!
by VoroneTZ. 10/14/25 05:04
|
|
|
|
|
|
0 registered members (),
9,184
guests, and 0
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
drehendes zahnrad ?
#420331
03/23/13 19:38
03/23/13 19:38
|
Joined: Oct 2008
Posts: 341
ratz
OP
Senior Member
|
OP
Senior Member
Joined: Oct 2008
Posts: 341
|
Hallo ich habe gerade ein zahnrad gemacht und mir gedacht man könnte ja mal aus spaß nen level machen und stelle sich vor das 2 zahnräder mit physic drehen zu lassen -> klappt das ?? hier ist meine function: dynamisch für collisionserkennung der einzlnden Zähne
action test_wheel()
{
pXent_settype(me, PH_STATIC, PH_POLY);
}
wie sage ich meiner function das es sich drehen soll ?
|
|
|
Re: drehendes zahnrad ?
[Re: ratz]
#420335
03/23/13 20:00
03/23/13 20:00
|
Joined: Oct 2011
Posts: 1,082 Germany
Ch40zzC0d3r
Serious User
|
Serious User
Joined: Oct 2011
Posts: 1,082
Germany
|
pXent_rotate ist hier die lösung. Vergesse aber nicht per pXent_setbodyflag NX_BF_KINEMATIC zu setzen sonst gibts keine Kollisionserkennung.
Last edited by Ch40zzC0d3r; 03/23/13 20:01.
|
|
|
Re: drehendes zahnrad ?
[Re: ratz]
#420345
03/23/13 21:19
03/23/13 21:19
|
Joined: Oct 2008
Posts: 341
ratz
OP
Senior Member
|
OP
Senior Member
Joined: Oct 2008
Posts: 341
|
action test_wheel()
{
ENTITY *actor;
pXent_settype(me, PH_STATIC, PH_POLY);
//c_rotate(me,vector(time_step,0,0),GLIDE);
pXent_setbodyflag (me, NX_BF_KINEMATIC,1);
actor.skill1 += 5*time_frame; // angle
pXent_rotate(me,NULL,actor.skill1);
}
ich weis nicht wie ich der function sagen kann das sie mit my oder me sich dreht und nicht als entity
Last edited by ratz; 03/23/13 21:20.
|
|
|
Re: drehendes zahnrad ?
[Re: ratz]
#420361
03/24/13 12:37
03/24/13 12:37
|
Joined: Oct 2008
Posts: 341
ratz
OP
Senior Member
|
OP
Senior Member
Joined: Oct 2008
Posts: 341
|
okey ich hab das ganze heute nochmal neu hochgezogen: zahnrad1: einfaches Physic object zahnrad2: physic object was sich drehen soll hier der code:
///////////////////////////////
#include <acknex.h>
#include <default.c>
#include <ackphysX.h>
///////////////////////////////
function main()
{
physX_open();
level_load("room.WMB");
}
action easy_wheel()
{
c_setminmax(me);
pXent_settype(me, PH_RIGID, PH_BOX);
}
action force_wheel()
{
c_setminmax(me);
pXent_settype(me, PH_CHAR, PH_SPHERE);
pXent_setbodyflag(me,NX_BF_KINEMATIC,1);
while(1)
{
if (key_space == 1)
{
//pXent_rotate(me, nullvector, vector(time_step, 0, 0)); // -> NICHTS
//my.pan += 5*time_step; //-> bewegt sich nur 1 cm vor wenn gedrückt
}
wait(1);
}
}
das "easy_wheel" (einfaches zahnrad) muss
pXent_settype(me, PH_RIGID, PH_BOX);
haben, da es sonst nicht mehr auf den boden fällt wenn ich PH_STATIC und PH_POLY benutze desswegen habe ich versucht das problem mit c_setminmax zu lösen ... das Bewegende zahnrad soll sich jetzt einfach nur drehen. Aber wenn ich pXent_rotate mache passiert nichts  im Handbuch ist nur son komplizirtes physic car beschriben welches "actor.skill1" als antrieb benutzt -> was ist damit gemeint ? Wenn ich aber "my.pan" benutze dreht das rad nur 1 cm nach vorne solange ich die Taste drücke , lasse ich sie los , springt es wieder zurück ich braüchte mal nen Physic Fachman der mir nen einfaches pXent_rotate beispiel geben kann 
|
|
|
Re: drehendes zahnrad ?
[Re: ratz]
#420363
03/24/13 13:25
03/24/13 13:25
|
Joined: Oct 2011
Posts: 1,082 Germany
Ch40zzC0d3r
Serious User
|
Serious User
Joined: Oct 2011
Posts: 1,082
Germany
|
Es muss alles PH_POLY sein sonst ist es ja nur eine riesen box  Wass will da ineinander greifen? Am besten verwendust zusätzlich gelenke zum fixieren. Gucke dazu mal ins Auto-Beispiel mit physx und den Achsen.
Last edited by Ch40zzC0d3r; 03/24/13 13:25.
|
|
|
Re: drehendes zahnrad ?
[Re: Ch40zzC0d3r]
#420365
03/24/13 14:18
03/24/13 14:18
|
Joined: Oct 2008
Posts: 341
ratz
OP
Senior Member
|
OP
Senior Member
Joined: Oct 2008
Posts: 341
|
PH_POLY kann ich nur in verbindung mit PH_STATIC setzen okey ich habs jetzt so gemacht:
action easy_wheel()
{
c_setminmax(me);
pXent_setbodyflag(me,NX_BF_KINEMATIC,1);
pXent_settype(me, PH_STATIC,PH_POLY);
}
action force_wheel()
{
c_setminmax(me);
pXent_setbodyflag(me,NX_BF_KINEMATIC,1);
pXent_settype(me, PH_STATIC, PH_POLY);
ANGLE angle_me;
while(1)
{
if (key_space == 1)
{
angle_me.pan += 2* time_step;
pXent_rotate(me, nullvector, angle_me);
}
wait(1);
}
}
aber das Drehende Zahnrad geht durch das easy_wheel (sprich: keine Kollision)
|
|
|
|