Gamestudio Links
Zorro Links
Newest Posts
loading historical data 1st time
by AndrewAMD. 04/14/23 12:54
Trade at bar open
by juanex. 04/13/23 19:43
Bug in Highpass2 filter
by rki. 04/13/23 09:54
Adding Limit Orders For IB
by scatters. 04/11/23 16:16
FisherN
by rki. 04/11/23 08:38
AUM Magazine
Latest Screens
SHADOW (2014)
DEAD TASTE
Tactics of World War I
Hecknex World
Who's Online Now
1 registered members (Grant), 999 guests, and 2 spiders.
Key: Admin, Global Mod, Mod
Newest Members
rki, FranzIII, indonesiae, The_Judge, storrealba
18919 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 1 of 2 1 2
schnelle frage -> show Cam soll sich nur 90° drehen #397685
03/22/12 09:58
03/22/12 09:58
Joined: Oct 2008
Posts: 341
R
ratz Offline OP
Senior Member
ratz  Offline OP
Senior Member
R

Joined: Oct 2008
Posts: 341
Hi
da ich zurzeit krank bin und zuhause an mein spiel wieter arbeite bin ich jetzt bei den Punkt angekommen, dass ich eine Camera brauche, die nach 5 Sec sich um 90 grad dreht.

was mache ich falsch wenn ich es so versuche:
Code:
action cam_move()
{
 wait(-5);
 while(1)
 {
  camera.pan += 5* time_step;
  wait(1);
 }	
}


oder anders gefragt: wie stoppe ich die drehung wieder tongue ?

Re: schnelle frage -> show Cam soll sich nur 90° drehen [Re: ratz] #397686
03/22/12 10:08
03/22/12 10:08
Joined: Dec 2003
Posts: 988
Germany, Magdeburg
JoGa Offline
User
JoGa  Offline
User

Joined: Dec 2003
Posts: 988
Germany, Magdeburg
naja, indem du eine Bedingung einbaust.
im Moment heißt deine Bedingung in der while-schleife (1), ist also immer wahr und das ding dreht sich endlos.
versuch die das doch mal mit der Bedingung, dass die Drehung 90° erreicht.

also z.B
Code:
function drehung_90_grad()
{
 var ist_drehung;
 int max_drehung=90;
 int speed = 5;
 while(1)
 {
  wait(-5);
  ist_drehung = 0;
  while(ist_drehung < max_drehung)
  {
   camera.pan += speed * time_step;
   ist_drehung += speed * time_step;
   wait(1);
  }
 }
}


damit hättest ne funktion, die ab Aufrufen die Kamera alle 5 sec um 90° dreht.

Last edited by JoGa; 03/22/12 10:17.
Re: schnelle frage -> show Cam soll sich nur 90° drehen [Re: JoGa] #397688
03/22/12 10:14
03/22/12 10:14
Joined: Oct 2008
Posts: 341
R
ratz Offline OP
Senior Member
ratz  Offline OP
Senior Member
R

Joined: Oct 2008
Posts: 341
habs ausprobiert ... dreht sich immer noch endlos
nach 5 sec

Last edited by ratz; 03/22/12 10:15.
Re: schnelle frage -> show Cam soll sich nur 90° drehen [Re: ratz] #397689
03/22/12 10:18
03/22/12 10:18
Joined: Dec 2003
Posts: 988
Germany, Magdeburg
JoGa Offline
User
JoGa  Offline
User

Joined: Dec 2003
Posts: 988
Germany, Magdeburg
sry, hatte was im Code vergessen :->
ist_drehung muss natürlich erhöht werden, habs oben verbessert.

aber ich glaube, der Code hier ist etwas schöner, als der obere:

Code:
function dreh_dich(var drehung)
{
	int speed = 5;
	var camera_neu_pan = camera.pan + drehung;
	while(1)
	{
		wait(-5);
		while(camera.pan < camera_neu_pan)
		{
			camera.pan += speed * time_step;
			wait(1);
		}
	}
}


so Parameterangaben in den Funktionen kannst du dann verwenden, um die Funktion allgemeiner zu halten.

Last edited by JoGa; 03/22/12 10:26.
Re: schnelle frage -> show Cam soll sich nur 90° drehen [Re: ratz] #397690
03/22/12 10:29
03/22/12 10:29
Joined: Oct 2008
Posts: 341
R
ratz Offline OP
Senior Member
ratz  Offline OP
Senior Member
R

Joined: Oct 2008
Posts: 341
SO GEHTS grin

Code:
function cam_move()
{
 var drehung;
 var speed = 5;

 wait(-5);

 while(1)
 {
  drehung++;

  if(drehung == 90)
  {
   speed = 0;
  }
 
  camera.pan += speed* time_step;
  wait(1); 
 }
}



danke für den anstups ^^

Last edited by ratz; 03/22/12 10:29.
Re: schnelle frage -> show Cam soll sich nur 90° drehen [Re: ratz] #397691
03/22/12 10:39
03/22/12 10:39
Joined: Dec 2003
Posts: 988
Germany, Magdeburg
JoGa Offline
User
JoGa  Offline
User

Joined: Dec 2003
Posts: 988
Germany, Magdeburg
kein Ding ;-)

beachte jedoch, dass deine Funktion nicht beendet wird!
die while-Schleife wird trotz des beenden nicht verlassen. Dein erster Post machte den Eindruck, dass sich die Entity alle 5 sec drehen soll (deine while(1)-Schleife).
Wenn das nicht so ist, dann brauchst du bei meinem zweiten Beispiel die erste While-Schleife garnicht:
Code:
function dreh_dich(var drehung)
{
	int speed = 5;
	var camera_neu_pan = camera.pan + drehung;

	wait(-5);
	while(camera.pan < camera_neu_pan)
	{
		camera.pan += speed * time_step;
		wait(1);
	}
}


bzw bei deiner kannst du statt speed = 0; auch einfach return; schreiben und die Funktion braucht nicht mehr weiter "im Leerlauf Kreis zu fahren" laugh

Last edited by JoGa; 03/22/12 10:40.
Re: schnelle frage -> show Cam soll sich nur 90° drehen [Re: JoGa] #397730
03/22/12 21:43
03/22/12 21:43
Joined: Oct 2008
Posts: 341
R
ratz Offline OP
Senior Member
ratz  Offline OP
Senior Member
R

Joined: Oct 2008
Posts: 341
ich will das immer ganz einfach und kurtz halten

dann so:
Code:
function cam_move()
{
 var drehung;
 var speed = 5;

 wait(-5);

 while(1)
 {
  drehung++;

  if(drehung == 90)
  {
   return 0;
  }
 
  camera.pan += speed* time_step;
  wait(1); 
 }
}



danke nochmals wink

Re: schnelle frage -> show Cam soll sich nur 90° drehen [Re: ratz] #397758
03/23/12 10:47
03/23/12 10:47
Joined: Aug 2007
Posts: 1,922
Schweiz
Widi Offline
Serious User
Widi  Offline
Serious User

Joined: Aug 2007
Posts: 1,922
Schweiz
Schlecht (unübersichtlich) programmiert. Vermeide wenn möglich das "return"
Code:
function cam_move()
{
   var drehung;
   var speed = 5;

   wait(-5);

   for(drehung = 0; drehung <= 90; drehung ++)
   {
      camera.pan += speed * time_step;
      wait(1); 
   }
}


Und falls du eine while Schleife verwenden willst, initialisiere "drehung" mit 0, weil sonst irgendwas in drehung enthalten ist.
Auch ist der gedrehte Winkel am Schluss nicht unbedingt 90 Grad?
Code:
function cam_move()
{
   var drehung;
   var speed = 5;

   wait(-5);

   for(drehung = 0; drehung <= 90; drehung += speed * time_step;)
   {
      camera.pan += speed * time_step;
      wait(1); 
   }
}


So drehst du deine Kamera um 90 Grad.

Last edited by Widi; 03/23/12 10:59.
Re: schnelle frage -> show Cam soll sich nur 90° drehen [Re: Widi] #397759
03/23/12 10:56
03/23/12 10:56
Joined: Jun 2009
Posts: 2,210
Bavaria, Germany
Kartoffel Offline
Expert
Kartoffel  Offline
Expert

Joined: Jun 2009
Posts: 2,210
Bavaria, Germany
Originally Posted By: Widi
Und falls du eine while Schleife verwenden willst, initialisiere "drehung" mit 0, weil sonst irgendwas in drehung enthalten ist.

Bei vars geht das eigentlich...
aber Vektoren machen damit ziemlich probleme

EDIT: oder meitest du das "for(drehung = 0;..."

Trotzdem ist es immer gut ne Variable/Vektor/etc. mit einem Wert zu initialisieren oder gleich nach dem initialisieren einen Wert zu setzten wink

Last edited by Kartoffel; 03/23/12 10:57.

POTATO-MAN saves the day! - Random
Re: schnelle frage -> show Cam soll sich nur 90° drehen [Re: Kartoffel] #397762
03/23/12 11:06
03/23/12 11:06
Joined: Aug 2007
Posts: 1,922
Schweiz
Widi Offline
Serious User
Widi  Offline
Serious User

Joined: Aug 2007
Posts: 1,922
Schweiz
from the manual:
Quote:

In C-Script werden sämtliche nicht initialisierte Variablen automatisch auf 0 initialisiert. Dies geschieht zu Ungunsten der Performance lokaler Variablen. LC Daher ist die Autoinitialisierung in Lite-C wählbar und kann mit der PRAGMA_ZERO-Definition angeschaltet werden:

#define PRAGMA_ZERO // initialize variables
Wird diese Zeile am Anfang des Skriptes eingefügt, werden alle nicht initialisierten globalen und lokalen Variablen automatisch auf Null initialisiert. Funktionsaufrufe sind dann etwas langsamer.

var drehung;
while (drehung < 90)

--> drehung kann irgendwas enthalten, kann also schon über 90 sein und die Schleife wird nicht durchgeführt. Benutze:
var drehung = 0;
für die Lösung mit der while Schleife. Bei der for Schleife ist das nicht notwendig, da ja am ersten Punkt die Variable auf 0 initialisiert wird.

Page 1 of 2 1 2

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