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?