Gamestudio Links
Zorro Links
Newest Posts
Newbie Questions
by fairtrader. 12/05/23 14:22
Zorro Trader GPT
by TipmyPip. 12/04/23 11:34
Square root rule
by Smallz. 12/02/23 09:15
RTest not found error
by TipmyPip. 12/01/23 21:43
neural function for Python to [Train]
by TipmyPip. 12/01/23 14:47
Xor Memory Problem.
by TipmyPip. 11/28/23 14:23
Training with command line parameters
by TipmyPip. 11/26/23 08:42
Combine USD & BTC Pairs In Asset Loop
by TipmyPip. 11/26/23 08:30
AUM Magazine
Latest Screens
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Tactics of World War I
Who's Online Now
6 registered members (AndrewAMD, Quad, soulman3, Ayumi, steyr, 3run), 631 guests, and 2 spiders.
Key: Admin, Global Mod, Mod
Newest Members
fairtrader, hus, Vurtis, Harry5, KelvinC
19019 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Geschw. per Tastendruck festlegen, aber wie ? #272567
06/18/09 17:39
06/18/09 17:39
Joined: Apr 2005
Posts: 274
austria
Ascalon Offline OP
Member
Ascalon  Offline OP
Member

Joined: Apr 2005
Posts: 274
austria
hallo !
Wie mache ich das am besten, wenn ich die Geschwindigkeit per Tastendruck auf bestimmte Geschwindigkeiten festsetzten möchte.
Also bei Taste 1 auf 25% der Geschwindigkeit, bei Taste 2 auf 50% der Geschw. setzen usw.

Die Geschwindigkeit sollte langsam diesen Wert erreichen. Ich schaffe das mit meinem Code nur, wenn ich die Taste "1" gedrückt halte. Möchte aber nur einmal kurz drauf drücken.

Code:
while(1) 
{ 
if(key_w == 1 && temp_x <= max_speed) 
temp_x += 1 * time_step; 
if(key_s == 1 && temp_x >= 0) 
temp_x -= 1 * time_step; 
if(key_1) 
temp_x = max_speed*0.25; 
if(key_2) 
temp_x = max_speed*0.5; 
if(key_3) 
temp_x = max_speed*0.75; 
if(key_4) 
temp_x = max_speed; 

Raumschiff_speed.x = temp_x; 
Raumschiff_speed.y = 0; 
Raumschiff_speed.z = 0; 

Raumschiff.pan -= mouse_force.x * 5 * time_step; 
c_move(my,Raumschiff_speed,nullvector, IGNORE_PASSABLE | GLIDE); 
wait(1); 
} 


ich weiß, dass das momentan falsch ist, aber wie muss ich den code ändern ? hab folgendes probiert
Code:
if(key_1 == 1 && temp_speed != max_speed*0.25) 
temp_x += 1*time_step; 



my webside : www.ascalon.jimdo.de
Re: Geschw. per Tastendruck festlegen, aber wie ? [Re: Ascalon] #272675
06/19/09 09:13
06/19/09 09:13
Joined: Apr 2005
Posts: 274
austria
Ascalon Offline OP
Member
Ascalon  Offline OP
Member

Joined: Apr 2005
Posts: 274
austria
kann mir keiner helfen ?


my webside : www.ascalon.jimdo.de
Re: Geschw. per Tastendruck festlegen, aber wie ? [Re: Ascalon] #272793
06/19/09 20:10
06/19/09 20:10
Joined: Jun 2006
Posts: 2,640
Earth
Germanunkol Offline
Expert
Germanunkol  Offline
Expert

Joined: Jun 2006
Posts: 2,640
Earth
tu diese zeile vor die funktion:
var speedGoal = 0;
und dann
ersetze das:
if(key_w == 1 && temp_x <= max_speed)
temp_x += 1 * time_step;
if(key_s == 1 && temp_x >= 0)
temp_x -= 1 * time_step;
if(key_1)
temp_x = max_speed*0.25;
if(key_2)
temp_x = max_speed*0.5;
if(key_3)
temp_x = max_speed*0.75;
if(key_4)
temp_x = max_speed;


durch das:
if(key_1)
speedGoal = max_speed*0.25;
if(key_2)
speedGoal = max_speed*0.5;
if(key_3)
speedGoal = max_speed*0.75;
if(key_4)
speedGoal = max_speed;

temp_x += clamp(speedGoal-temp_x,-1,1)*time_step;

Erklärung:
Die ersten Zeilen setzen die geschwindigkeit, die das ding anpeilen soll. Egal ob was gedrückt wird oder nicht wird sich mit der letzten zeile das temp_x dem speedGoal annähern.
Wenn speedGoal zum beispiel 10 ist und temp_x = 0 dann ist 10-0 = 10, da es mit clamp zwischen -1 und 1 gehalten wird ist es also hier 1. das multipliziert mit time_step ist genau das was du vorher in der zeile:
temp_x += 1 * time_step;
gemacht hast.
Wenn jetzt temp_x im moment größer als speedGoal ist (temp_x = 5 und speedGoal = 2) dann ist speedGoal-temp_x = 2 - 5 = -3
-3 wird durch den clamp befehl zu -1 und das heißt dann dass -1*time_step dazuadiert wird. Da das negativ ist wird also die geschwindigkeit geringer.

Achtung: du darfst hier temp_x nicht außerhalb der funktion ändern, es sei denn du weißt was du damit machst. Andere funktionen sollten also jetzt nicht mehr temp_x als temporären vektor benutzen, falls du das grade tust.

Hoffe das hilft...


~"I never let school interfere with my education"~
-Mark Twain
Re: Geschw. per Tastendruck festlegen, aber wie ? [Re: Germanunkol] #272866
06/20/09 07:02
06/20/09 07:02
Joined: Apr 2005
Posts: 274
austria
Ascalon Offline OP
Member
Ascalon  Offline OP
Member

Joined: Apr 2005
Posts: 274
austria
Wow !! Vielen, vielen dank ! Funktioniert super und genau so wie ich es mir vorgestellt habe ! Danke für die Hilfe.
Wenn ich die Geschwindigkeit zusätzlich noch mit Taste w und s ändern möchte, dann muss ich eine andere Variable wählen als temp_x oder ? Weil zusammen mit dem geht das dann nicht mehr:
Code:
temp_x += 0.5 * (key_w - key_s) * time_step;
temp_x = clamp(temp_x,0,max_speed);




my webside : www.ascalon.jimdo.de
Re: Geschw. per Tastendruck festlegen, aber wie ? [Re: Ascalon] #272916
06/20/09 13:59
06/20/09 13:59
Joined: Jun 2006
Posts: 2,640
Earth
Germanunkol Offline
Expert
Germanunkol  Offline
Expert

Joined: Jun 2006
Posts: 2,640
Earth
wenn du var speedGoal wirklich vor der funktion hast (bzw vor allen funktionen, die es benutzen) kannst du bei deinem:
temp_x += 0.5 * (key_w - key_s) * time_step;
temp_x = clamp(temp_x,0,max_speed);

einfach temp_x durch speedGoal ersetzen, so:
speedGoal += 0.5 * (key_w - key_s) * time_step;
speedGoal = clamp(speedGoal,0,max_speed);

Dann legen die tasten 1-4 weiter feste geschwindigkeiten fest und w und s ändern diese geschwindigkeit noch dazu.
Vorteil ist dass egal zu was du speedGoal setzt, es immer gleich beschleunigt und abbremst bis es bei genau dieser geschwindigkeit angekommen ist.

temp_x kannst du eigentlich ganz weg lassen, wenn du statt diesen beiden zeilen:
temp_x += clamp(speedGoal-temp_x,-1,1)*time_step;
Raumschiff_speed.x = temp_x;

nur das hier machst:
Raumschiff_speed.x += clamp(speedGoal-Raumschiff_speed.x,-1,1)*time_step;

dann brauchst du temp_x nicht mehr. Musst du aber nicht machen.

Last edited by Germanunkol; 06/20/09 13:59.

~"I never let school interfere with my education"~
-Mark Twain
Re: Geschw. per Tastendruck festlegen, aber wie ? [Re: Germanunkol] #272921
06/20/09 14:28
06/20/09 14:28
Joined: Apr 2005
Posts: 274
austria
Ascalon Offline OP
Member
Ascalon  Offline OP
Member

Joined: Apr 2005
Posts: 274
austria
vielen vielen Dank ! Jetzt klappt alles wunderbar und du hast super erklärt, danke !

Könntest sicher gute Tutorials schreiben grin


my webside : www.ascalon.jimdo.de
Re: Geschw. per Tastendruck festlegen, aber wie ? [Re: Ascalon] #273068
06/21/09 09:17
06/21/09 09:17
Joined: Jun 2006
Posts: 2,640
Earth
Germanunkol Offline
Expert
Germanunkol  Offline
Expert

Joined: Jun 2006
Posts: 2,640
Earth
=D.
Danke für das Lob.
Vielleicht iiiiirgendwann mal, wenn ich die zeit finde...
Schön dass es jetzt geht!


~"I never let school interfere with my education"~
-Mark Twain

Moderated by  HeelX, Lukas, rayp, Rei_Ayanami, Superku, Tobias, TWO, VeT 

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