2 registered members (AndrewAMD, rki),
390
guests, and 0
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Panzer Physik
#451736
05/18/15 18:01
05/18/15 18:01
|
Joined: Jan 2006
Posts: 168 Germany, Hannover
DexLoomer
OP
Member
|
OP
Member
Joined: Jan 2006
Posts: 168
Germany, Hannover
|
Hi Leute, ich versuche ein Fahrzeug wie einen Panzer fahren zu lassen. Dafür möchte ich, dass sich bei der vor/zurück Bewegung die Räder rechts und links synchron bewegen. Aber bei einer links/rechts Steuerung konträr zueinander, so das sich das Fahrzeug eine Drehung beschreibt. Bisher habe ich nur eine unelegante Lösung:
.
.
while(entCar != NULL)
{
if(key_pressed(key_for_str("cuu")) || key_pressed(key_for_str("cud")))
{
pXcon_setwheel(entFrontLeftWheel, 0, (key_cuu - key_cud)*100000*time_step, 0);
pXcon_setwheel(entFrontRightWheel, 0, (key_cuu - key_cud)*100000*time_step, 0);
pXcon_setwheel(entBackLeftWheel, 0, (key_cuu - key_cud)*100000*time_step, 0);
pXcon_setwheel(entBackRightWheel, 0, (key_cuu - key_cud)*100000*time_step, 0);
}
if(key_pressed(key_for_str("cul")) || key_pressed(key_for_str("cur")))
{
pXcon_setwheel(entFrontLeftWheel, 0, (key_cur - key_cul)*100000*time_step, 0);
pXcon_setwheel(entFrontRightWheel, 0, (key_cur - key_cul)*-100000*time_step, 0);
pXcon_setwheel(entBackLeftWheel, 0, (key_cur - key_cul)*100000*time_step, 0);
pXcon_setwheel(entBackRightWheel, 0, (key_cur - key_cul)*-100000*time_step, 0);
}
wait(1);
}
.
.
Das Problem ist, dass der Schub mit dieser Abfrage nicht aufhört, wenn die Richtung einmal gedrückt wurde. Ich habe auch schon versucht den Bulldozer Code (vom Summer 2008 contest) auf A8 Physix umzuschreiben, denn dieser macht genau das was ich brauche. Bisher leider erfolglos.. Danke im Voraus ;-)
A8-Com-v 8.47.1
|
|
|
Re: Panzer Physik
[Re: DexLoomer]
#451752
05/19/15 13:11
05/19/15 13:11
|
Joined: Jan 2006
Posts: 168 Germany, Hannover
DexLoomer
OP
Member
|
OP
Member
Joined: Jan 2006
Posts: 168
Germany, Hannover
|
Hab den Code inzwischen etwas verbessert, hakelt aber immer noch! Besonders wenn mehere Tasten, (z.B. gerade aus und links) gedrückt werden. Hat jemand von Euch einen Tip?
.
.
while(entCar != NULL)
{
schub_L = 0;
schub_R = 0;
if(key_pressed(key_for_str("cuu")) == 1)
{
schub_L = -1;
schub_R = -1;
}
if(key_pressed(key_for_str("cud")) == 1)
{
schub_L = 1;
schub_R = 1;
}
if(key_pressed(key_for_str("cul")) == 1)
{
schub_L = -1;
schub_R = 1;
}
if(key_pressed(key_for_str("cur")) == 1)
{
schub_L = 1;
schub_R = -1;
}
pXcon_setwheel(entFrontLeftWheel, 0, (schub_L)*100000*time_step, 0);
pXcon_setwheel(entFrontRightWheel, 0, (schub_R)*100000*time_step, 0);
pXcon_setwheel(entBackLeftWheel, 0, (schub_L)*100000*time_step, 0);
pXcon_setwheel(entBackRightWheel, 0, (schub_R)*100000*time_step, 0);
wait(1);
}
.
.
A8-Com-v 8.47.1
|
|
|
Re: Panzer Physik
[Re: DexLoomer]
#451770
05/20/15 11:33
05/20/15 11:33
|
Joined: Jan 2006
Posts: 168 Germany, Hannover
DexLoomer
OP
Member
|
OP
Member
Joined: Jan 2006
Posts: 168
Germany, Hannover
|
Ok habe es hinbekommen.. Mache es wie im Bulldozer Code:
while(entTank != NULL)
{
entTank.force_left = clamp (key_cuu - key_cud + (key_cur - key_cul) * (1 - 2 * key_cud), -1, 1);
entTank.force_right = clamp (key_cuu - key_cud + (key_cul - key_cur) * (1 - 2 * key_cud), -1, 1);
pXcon_setwheel (entFrontLeftWheel, 0, (-entTank.force_left * speed), 0);
pXcon_setwheel (entBackLeftWheel, 0, (-entTank.force_left * speed), 0);
pXcon_setwheel (entFrontRightWheel, 0, (-entTank.force_right * speed), 0);
pXcon_setwheel (entBackRightWheel, 0, (-entTank.force_right * speed), 0);
wait(1);
}
A8-Com-v 8.47.1
|
|
|
|