0 registered members (),
1,094
guests, and 1
spider. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Re: Teleporter Code
[Re: Liamissimo]
#355675
01/28/11 15:07
01/28/11 15:07
|
Joined: Jul 2010
Posts: 974 United Arab Emirates, Dubai
TheShooter
OP
User
|
OP
User
Joined: Jul 2010
Posts: 974
United Arab Emirates, Dubai
|
Ich habs jetzt so:
while (1)
{
if (ball.skill10 = 1){pXent_enable(ball, 1);}
if (ball.skill10 = 0){pXent_enable(ball, 0);}
if(ball.z < -100)
{
ball.skill10 = 0;
vec_set(ball.x,vector(-200,57,30));
ball.skill10 = 1;
}
wait(1);
}
}
Aber der Ball verschwindet, wenn er niedrieger als -100 ist Ist es schlimm, dass der whileloop in der main ist?
Last edited by TheShooter; 01/28/11 15:08.
|
|
|
Re: Teleporter Code
[Re: TheShooter]
#355685
01/28/11 15:42
01/28/11 15:42
|
Joined: Apr 2007
Posts: 3,751 Canada
WretchedSid
Expert
|
Expert
Joined: Apr 2007
Posts: 3,751
Canada
|
Ähm, du schaltest die Physikengine nie ab. Du änderst zwar den Skill, aber das hat keine Auswirkung bis zum nächsten Frame wo du dann zwei unsinnige Abfragen bastelst.
while (1)
{
pXent_enable(ball, ball.skill10);
if(ball.z < -100)
{
pXent_enable(ball, 0);
vec_set(ball.x, vector(-200, 57, 30));
pXent_enable(ball, 1);
}
wait(1);
}
Das erste pXent_enable() ist nur da für den Fall das du es noch anderweitig mit skill10 togglen willst, ansonsten kannst du es rauswerfen wenn du lustig bist.
Last edited by JustSid; 01/28/11 15:44.
Shitlord by trade and passion. Graphics programmer at Laminar Research. I write blog posts at feresignum.com
|
|
|
Bug-Vermutung: pXent_enable -> addforce führt zum Chaos
[Re: WretchedSid]
#355694
01/28/11 16:05
01/28/11 16:05
|
Joined: Sep 2003
Posts: 303 Germany
Clemens
Senior Member
|
Senior Member
Joined: Sep 2003
Posts: 303
Germany
|
Tjo, nur ist das ja genau der bekannte Code, der dafür sorgt, dass sich der replatzierte Ball danach nicht mehr sinnvoll verhält, zumindest was das Einwirken per addforce betrifft (zigfacher Kraftfaktor). Im Übrigen ist das auch dann der Fall, wenn der Ball im ganzen Spiel noch keinen Millimeter bewegt wurde. Wir können sogar auf vec_set verzichten:
pXent_enable(Ball, 0);
pXent_enable(Ball, 1);
sorgt bereits für den Effekt... wenn das mal kein Bug ist!?
|
|
|
Re: Bug-Vermutung: pXent_enable -> addforce führt zum Chaos
[Re: Clemens]
#355697
01/28/11 16:13
01/28/11 16:13
|
Joined: Jul 2010
Posts: 974 United Arab Emirates, Dubai
TheShooter
OP
User
|
OP
User
Joined: Jul 2010
Posts: 974
United Arab Emirates, Dubai
|
Ich habe die Lösung gefunden: Muss so heißen:
if(ball.z < -100)
{
pXent_enable(ball, 0);
vec_set(ball.x,vector(-200,57,30));
pXent_enable(ball,1);
pXent_settype(ball, PH_RIGID, PH_SPHERE);
pXent_setfriction (ball,100);
pXent_setdamping (ball,100,100);
pXent_setelasticity (ball,100);
}
Habe allerdings schon wieder das nächste Problem. In meinem Level führt eine Rampe hinunter. Irgendwann komm ich dann ja logischerweise unter -100. Dann werde ich wieder zurückteleportiert. Wie funktionieren denn Trigger??
Last edited by TheShooter; 01/28/11 16:26.
|
|
|
Re: Bug-Vermutung: pXent_enable -> addforce führt zum Chaos
[Re: TheShooter]
#355712
01/28/11 16:41
01/28/11 16:41
|
Joined: Sep 2003
Posts: 303 Germany
Clemens
Senior Member
|
Senior Member
Joined: Sep 2003
Posts: 303
Germany
|
Du meinst, man muss die Eigenschaften neu setzen? Und du hast recht! Man ey, da sucht man ewig - nur weil der Scheiß nicht im Manual steht *nerv* Das erklärt auch, warum der Fehler beim extra angefertigten Bug-Testlevel nicht zu finden war:
///////////////////////////////
#include <acknex.h>
#include <default.c>
#include <ackphysx.h>
///////////////////////////////
function main() {
physX_open();
level_load(""); // load empty level
vec_set(camera.x,vector(0,-250,0));
camera.pan=90;
ENTITY* Ball = ent_create("sphere.mdl", nullvector, NULL);
pXent_settype(Ball,PH_RIGID,PH_BALL);
pX_setgravity (vector(0,0,0));
// das sollte eigentlich zum Bug führen ... ist aber offensichtlich NICHT die direkte (einzige) Quelle
pXent_enable(Ball, 0);
pXent_enable(Ball, 1);
while(1) {
if (key_cul) pXent_addforcecentral(Ball, vector(-0.03, 0, 0));
if (key_cur) pXent_addforcecentral(Ball, vector(0.03, 0, 0));
if (key_cuu) pXent_addforcecentral(Ball, vector(0, 0, 0.03));
if (key_cud)pXent_addforcecentral(Ball, vector(0, 0, -0.03));
wait(1);
}
}
Mit Bereichs-Triggern hab ich selbst so gut wie noch nie gearbeitet - und wenn dann ewig her. Eine Alternative wäre, dass du Bereiche einfach per selbigen while-if-check überprüfst. Du musst dann halt noch 1-2 weitere Koordinaten einfügen. D.h. du überprüfst zusätzlich ob der Ball sich in seiner x oder y Position bereits dort befindet, wo er etwas tiefer liegt (Rampe runter) -> dort setzte dann halt z< entsprechend neu an.
Last edited by Clemens; 01/28/11 16:44.
|
|
|
Moderated by mk_1, Perro, rayp, Realspawn, Rei_Ayanami, rvL_eXile, Spirit, Superku, Tobias, TSG_Torsten, VeT
|