1 registered members (AndrewAMD),
1,534
guests, and 3
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Re: Teleporter Code
[Re: Liamissimo]
#355656
01/28/11 14:20
01/28/11 14:20
|
Joined: Sep 2003
Posts: 303 Germany
Clemens
Senior Member
|
Senior Member
Joined: Sep 2003
Posts: 303
Germany
|
Also
pXent_enable(ball, 0);
vec_set (ball.x, vector(0, 0, -64));
pXent_enable(ball, 1);
und
pXent_settype(ball, 0, 0);
vec_set (ball.x, vector(0, 0, -64));
pXent_settype(ball, PH_RIGID, PH_SPHERE);
scheinen soweit zu ziemlich denselben Ergebnissen zu führen. Liam, mir ist nicht klar wie genau du das meinst? Also addforce bedeutet ja gerade, dass eine Kraft hinzugefügt wird - wenn nun aber der Ball doch im Ruhezustand ist, dann dürfte die hinzugefügte Kraft doch nicht plötzlich vielfach wirken!? Shooter, welchen "Reset"-Code verwendest du gerade für deinen Ball?
|
|
|
Re: Teleporter Code
[Re: Clemens]
#355659
01/28/11 14:26
01/28/11 14:26
|
Joined: Jul 2009
Posts: 1,198 Berlin, Germany
Liamissimo
Serious User
|
Serious User
Joined: Jul 2009
Posts: 1,198
Berlin, Germany
|
Ich hatte früher eine while Schleife die immer je nach Taste eine force added 8sehr Deutsch hier). Falls diese im Reset-Code wiederaufgerufen wird ist damit alles doppelt so schnell, logisch. Die könnte bei The_Shooter der Fall sein.
Der Ball ist weg? Versuch mal nach jedem Schritt ein wait(1); hinzuzufügen. Sonst benutze ich leider immernoch ODE.
"Ich weiss nicht genau, was Sie vorhaben, aber Sie können keine Triggerzonen durch Ihr Level kullern lassen." -JCL, 2011
|
|
|
Re: Teleporter Code
[Re: Liamissimo]
#355660
01/28/11 14:30
01/28/11 14:30
|
Joined: Jul 2010
Posts: 974 United Arab Emirates, Dubai
TheShooter
OP
User
|
OP
User
Joined: Jul 2010
Posts: 974
United Arab Emirates, Dubai
|
Also. Bei mir wird der Ball jetzt wieder an die Startposition teleportiert, und zwar mit diesem Code:
if(ball.z < -100)
{
pXent_enable(ball, 0);
vec_set(ball.x,vector(-200,57,30));
pXent_enable(ball, 1);
}
Den Ball beschleunige ich mit diesem Code:
ball_force.y = (key_cur-key_cul) *50*time_step; //rotiert den Ball entlang der Y-Achse
ball_force.z = 0; //totiert den Ball über die Vertikale (Z) Achse.
Was allerdings in der gleichen whileschleife steht. Wenn ich es in eine andere whileschleife schreibe, oder gar in keine schleife, steckt die kamera irgendwo anders. Undefinierbar
[/code]
Hier mal meine komplette function main()
[code]
function main() // Die Main Function
{
physX_open(); //Startet die Physik-Simulationsschleife
shadow_stencil = 4;
shadow_range = 1000;
mat_shadow.alpha = 75;
stencil_blur(1);
video_switch(12,32,1);
level_load("Ball1.wmb"); //Lädt das erste Level
ent_createlayer("boulder_bay+6.tga", SKY | CUBE | SHOW, 0); //Erstellt den Himmel)
ball = ent_create ("ball.mdl", vector(-200, 57, 30), NULL); //Plaziert den Ball
set(ball, SHADOW | CAST); // Jetzt wirft der Ball Schatten
pXent_settype(ball, PH_RIGID, PH_SPHERE); //Setzt die Physikalischen Eigenschaften des Balles fest
pXent_setfriction (ball,100); //Setzt die Reibung des Balles fest
pXent_setdamping (ball,100,100); //Luftwiederstand nimmt Einfluss auf die Geschwindigkeit des Balles
pXent_setelasticity (ball,100); //Setzt den Koeffizienten der Begrenzung für den Ball
while (1)
{
if(ball.z < -100)
{
pXent_enable(ball, 0);
vec_set(ball.x,vector(-200,57,30));
pXent_enable(ball, 1);
}
else {pXent_enable(ball, 1);}
//ball_force.x = (key_cur-key_cul) *10*time_step; // rotiert den Ball entlang der X-Achse
ball_force.y = (key_cur-key_cul) *50*time_step; //rotiert den Ball entlang der Y-Achse
ball_force.z = 0; //totiert den Ball über die Vertikale (Z) Achse.
pXent_addtorqueglobal (ball, ball_force); //Setzt die Drehkraft des Balles fest
camera.x = ball.x;
camera.y = -500;
camera.z = 500;
camera.tilt = -45;
camera.pan = 90;
wait(1);
}
}
Last edited by TheShooter; 01/28/11 14:35.
|
|
|
Re: Teleporter Code
[Re: TheShooter]
#355661
01/28/11 14:38
01/28/11 14:38
|
Joined: Sep 2003
Posts: 303 Germany
Clemens
Senior Member
|
Senior Member
Joined: Sep 2003
Posts: 303
Germany
|
Ich versteh auch nachwievor nicht, warum das ein Problem sein sollte, in der gleichen while zu stehen. Mein Code:
while (1) {
if (key_cul) pXent_addforcecentral(Ball, vector(-0.1, 0, 0));
if (key_cur) pXent_addforcecentral(Ball, vector(0.1, 0, 0));
if (key_cuu) pXent_addforcecentral(Ball, vector(0, 0, 0.1));
if (key_cud) pXent_addforcecentral(Ball, vector(0, 0, -0.1));
// reset ball
if (key_shift) {
pXent_enable(Ball, 0);
vec_set (Ball.x, vector(0, 0, -64));
pXent_enable(Ball, 1);
wait(-1);
}
wait(1);
}
Scheint vom Prinzip her Shooters gleich zu kommen.
Last edited by Clemens; 01/28/11 14:39.
|
|
|
Re: Teleporter Code
[Re: Clemens]
#355665
01/28/11 14:43
01/28/11 14:43
|
Joined: Jul 2009
Posts: 1,198 Berlin, Germany
Liamissimo
Serious User
|
Serious User
Joined: Jul 2009
Posts: 1,198
Berlin, Germany
|
pXent_enable gibt zwar größer 0 zurück, allerdings ist es eine Funktion. Jeden Frame setzt du deinen Ball wieder in das System ein. Mach einfach ball.skill10 = 1 wenn Physik an ist, sonst ball.skill10 = 0. Dann prüfst du mit if(ball.skill10 = 1)
So wird der Ball wenn er ausgetragen wird sofort wieder eingetragen...Aber das Physiksystem war da schon immer lustig, auch unter ODE.
"Ich weiss nicht genau, was Sie vorhaben, aber Sie können keine Triggerzonen durch Ihr Level kullern lassen." -JCL, 2011
|
|
|
Re: Teleporter Code
[Re: TheShooter]
#355673
01/28/11 14:59
01/28/11 14:59
|
Joined: Jul 2009
Posts: 1,198 Berlin, Germany
Liamissimo
Serious User
|
Serious User
Joined: Jul 2009
Posts: 1,198
Berlin, Germany
|
Natürlich kannst du. Du kannst ball.z nicht ändern, lesen aber schon.
"Ich weiss nicht genau, was Sie vorhaben, aber Sie können keine Triggerzonen durch Ihr Level kullern lassen." -JCL, 2011
|
|
|
Moderated by mk_1, Perro, rayp, Realspawn, Rei_Ayanami, rvL_eXile, Spirit, Superku, Tobias, TSG_Torsten, VeT
|