Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 72%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 23%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 21%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 12%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 7%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 7%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 5%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 3%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 306 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

weasl

Mitglied

Dabei seit: 02.06.2010

Beiträge: 27

 

1 Zum Seitenanfang

Sonntag, 29. August 2010, 11:32

Processing: Beschleunigungsverzögerung

Hallo,

habe folgendes Problem:
Wenn die Pfeiltaste Rechts gedrückt wird soll ein Körper beschleunigt werden.
Bei untem stehenden Code passiert das auch, aber zuerst wird ein kleiner Stoß ausgeführt und nach ner Sekunde dann die volle Beschleunigung!
Die Konsolenausgabe bestätigt das:


Hier der wesentliche Code:

C/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
int x_dir = 0;
float x_speed = 0;
float x_acc = 0;
float x_acc_fwd = 0.025;
float x_acc_rev = -0.025;
float air_res = 0.05;

float x_vmax = 3.5;

int x_pos = 400;
int y_pos = 200;

int jet_pos = 0;

int framerate = 30;
long SimStepsPerFrame = 1;
long floating_time = 0;

boolean floating;
boolean brake = false;
boolean acc = true;

float frametime = framerate/SimStepsPerFrame;

PImage bg;


void setup() {
  size(800,400);
  bg = loadImage("bg.png");
  frameRate( framerate );
}

void draw() {
  background(20);
  image(bg, 0, 0);

  if (( x_dir == 1 ) && (floating == false)) {
	if ( x_speed >= x_vmax ) {
  	x_speed = x_vmax;
	} else {
  	x_speed += x_acc*frametime;   	
	}
  	x_pos += x_speed*frametime;  
  	
	
	} else if ((  x_dir == -1 ) && (floating == false)) {  
	if ( x_speed >= x_vmax ) {
  	x_speed = x_vmax;
	} else {
  	x_speed = x_acc*frametime;  
	}	
   
	x_pos += x_speed*frametime;  	
  }

	else if ((floating) && (x_dir == 1)) {
  	x_acc = 0;
  	x_speed += x_acc*frametime; - air_res*pow(x_speed,2);  
  	x_pos += x_speed*frametime;	
	} else if ((floating) && (x_dir == -1)) {
  	x_acc = 0;	
  	x_speed += x_acc*frametime + air_res*pow(x_speed,2);
  	x_pos += x_speed*frametime;        	
  }
  
  print("x_speed: ");
  print(x_speed);
  print("\t y_speed: ");
  print(y_speed);
  print("\t x_acc: ");
  print(x_acc);
  print("\t y_acc: ");
  print(y_acc);  
  print("\t x_pos: ");
  print(x_pos);
  print("\t y_pos: ");
  println(y_pos);	
  
  stroke(255);
  strokeWeight(10);
  point(400, 200);

  floating = true;
}


void keyPressed() {
  if ( keyCode == UP ) {
	y_acc = 1;
  } else if ( keyCode == DOWN ) {
	y_acc = -1;
  } else if ( keyCode == LEFT ) {  
	x_dir = -1;
	x_acc = x_acc_rev;	
  } else if ( keyCode == RIGHT ) {  
	x_dir = 1;	
	x_acc = x_acc_fwd;
  } 
  floating = false;
}


Kann mir jemand sagen wo der Fehler liegt?
 

weasl

Mitglied

Dabei seit: 02.06.2010

Beiträge: 27

 

2 Zum Seitenanfang

Mittwoch, 1. September 2010, 09:26

Erledigt

Problem gelöst:

Der keyState wird je nach keyPressed und keyReleased in nem bool. Array gesetzt und in der Hauptroutine dann geprüft anstelle gleich beim Tastendruck.
Sieht dann so aus: http://web569.srv13.sysproserver.de/applet2/