Simple Rechnung ist fehlerhaft!

SchalliLP

Aktives Mitglied
Hallo,
Ich mache gerade eine bessere kamerabewegung in nem 2D Spiel.
Dort habe ich xOffset (Die aktuelle Kamera X Position)
und yoffset (die aktuelle kamera y position)
xOffset1 (Die Ideale x Position)
und yOffset1 (Die Ideale y position)

Nun soll nach jedem schritt immer 10%des weges zurückgelegt werden
Also bei 100 pxl sollen 10 pxl gefahren werden
bei 10pxl 1 pxl
bei 200 pxl 20pxl

Nun habe ich das folgendermaßen geschrieben:
[Java]
xOffset = ((double) xOffset + (double) (((double) xOffset1 - (double) xOffset) / 10));
yOffset = ((double) yOffset + (double) (((double) yOffset1 - (double) yOffset) / 10));
[/Java]

Dies gibt mir allerdings anscheinend eine konstante Scrollgeschwindigkeit und nicht immer 10% pro Durchgang.
Kann mir jemand helfen?

Danke für eure Hilfe ^^

Gesamter Code fürs Scrollen:
[Java]
double xOffset1 = xOffset;
double yOffset1 = yOffset;

if (aktLevel.length > maxY) {
// 30x30
if (playerX - xOffset1 > maxX / 2) {
xOffset1++;
}
if (playerY - yOffset1 > maxY / 2) {
yOffset1++;
}

if (playerX - xOffset1 < maxX / 2) {
xOffset1--;
}
if (playerY - yOffset1 < maxY / 2) {
yOffset1--;
}

// OOB-Sicherung

if (xOffset1 <= 0) {

xOffset1 = 0;

}
if (yOffset1 <= 0) {

yOffset1 = 0;

}

if (xOffset1 > aktLevel.length - 30) {

xOffset1 = aktLevel.length - 30;

}
if (yOffset1 > aktLevel.length - 30) {

yOffset1 = aktLevel.length - 30;

}

// OOB-Sicherung Ende
}

xOffset = ((double) xOffset + (double) (((double) xOffset1 - (double) xOffset) / 10));
yOffset = ((double) yOffset + (double) (((double) yOffset1 - (double) yOffset) / 10));
[/code]
 

Gucky

Top Contributor
Ohne große Überprüfung des Codes, denke ich, es liegt daran, dass alle Konstanten in deinem Code ints sind. Häng ein D dran und es müsste funktionieren.
 

Thallius

Top Contributor
Ich kapiere überhaupt nicht was du da rechnest aber ich würde das so machen. (Pseudocode)

Java:
Double zielpos=?;
Double xpos=?;
while(xpos<zielpos)
{
    xpos=Xpos+(zielpos-xpos)/10;
}

Gruß

Claus
 

SchalliLP

Aktives Mitglied
So wie du Claus mache ich das tatsächlich auch...
nur anstatt das while packe ich das in ein Timer Objekt, allerdings kommen nicht immer 10% des weges als neue Position raus sondern ein einheitlicher wert der mit zunehmender Entfernung nicht steigt...

Die Rechnung für die Zielkoordinaten stimmt also muss etwas in deiner whileschleife Fehler machen was ich aber nicht nachvollziehen kann...
 

Thallius

Top Contributor
Wie kannst du sagen das du das gleiche machst wenn du eine formal hast die komplett anders aussieht?

Und ich bin ziemlich sicher, dass in meiner Schleife die x Position immer um 10% des Restweges erhöht wird.
 

SchalliLP

Aktives Mitglied
Java:
xOffset = ((double) xOffset + (double) (((double) xOffset1 - (double) xOffset) / 10D));
yOffset = ((double) yOffset + (double) (((double) yOffset1 - (double) yOffset) / 10D));
ist ja wie
Java:
xOffset = xOffset + (xOffset1 -  xOffset) / 10D;
yOffset = yOffset + (yOffset1 -  yOffset) / 10D;

was deiner Rechnung doch sehr ähnlich sieht oder?

Und damit bekomme ich anscheinend nicht immer 10% der Strecke raus...
und ich bin mir auch sicher das deine Schleife stimmen müsste... aber für mich will sie nicht :(
 

Gucky

Top Contributor
Versuch die Rechnung mal in mehrere Schritte zu zerlegen. Zusammenfassen kannst du immer noch aber solche langen Rechnungen solltest du in der Anfangszeit vermeiden. ;)

Du sagst es "anscheinend nicht immer 10% der Strecke raus". Was kommt stattdessen raus?
Mit welchen Werten sind die Variablen in diesen Fällen belegt?
Kennst du den Debugger? Der könnte helfen.
 

SchalliLP

Aktives Mitglied
Danke für deine Tipps. ich werde mich mal mit meinem Bruder (Das Logik Genie in meiner Reichweite) Zusammen hinsetzen und mit deinen Tipps Debugging betreiben.
Danke schon mal für alle Hilfe!
 

strußi

Top Contributor
ich glaube du berechnest immer wieder neu deine 10%. mein vorschlag ist es, diese in eine konstante speichern und nach jedem schritt neu zu deiner jeweiligen position addieren
 

Gucky

Top Contributor
Vielleicht könnte dir eine exponentielle Funktion helfen, wenn es mit der "quasirekursiven" Methode nicht funktioniert.
 

SchalliLP

Aktives Mitglied
Ok... Ich habe den Fehler gefunden.
Ich hatte die große Rechnung zum Idealwert verka***
Das habe ich behoben und nun funktioniert es ^^

Danke trotzdem für eure Ideen und ein dickes sorry fürs unnötige beschäftigen ._.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K "Simple" Rechnung in Java Java Basics - Anfänger-Themen 3
P Variablen HttpResponse.getBody() wird automatisch org.json Object und kann nicht zu json.simple Object gecastet werden? Java Basics - Anfänger-Themen 7
F Simple Verschluesselung Java Basics - Anfänger-Themen 2
T Erste Schritte Simple Programmbeispiele Java Basics - Anfänger-Themen 14
D Java - Simple Strings in .txt loggen. Java Basics - Anfänger-Themen 4
M Simple Date Format Java Basics - Anfänger-Themen 2
S Simple aber komplette Java Loesung von Emails. Java Basics - Anfänger-Themen 11
Beckenbauer Eine anstehende (sehr simple) Applikation in UML darstellen (Klassendiagramm) Java Basics - Anfänger-Themen 20
M Wieso funktioniert dieser simple Code nicht? Java Basics - Anfänger-Themen 9
nrg Eigene simple List-Klasse programmieren Java Basics - Anfänger-Themen 3
T Simple Enum Fragen Java Basics - Anfänger-Themen 6
J Simple Frage: Positive Zahlen zu Negativen machen. Java Basics - Anfänger-Themen 11
S 3 simple fragen Java Basics - Anfänger-Themen 6
Darth Simple Übergabe eines Strings an eine Methode Java Basics - Anfänger-Themen 3
G super operator und incompatible types, simple fehler Java Basics - Anfänger-Themen 8
J simple Frage zu synchronized Java Basics - Anfänger-Themen 4
T Ganz simple Konstruktoraufgabe Java Basics - Anfänger-Themen 3
G simple suche in java - mysql Java Basics - Anfänger-Themen 10
M Simple Animation funktioniert nicht (JFrame, Canvas, Thread) Java Basics - Anfänger-Themen 6
M Simple Java Basics - Anfänger-Themen 7
K Simple Frage zu Methoden und Rückgabewerte Java Basics - Anfänger-Themen 3
I Review von euch erwünscht, double Rechnung falsch Java Basics - Anfänger-Themen 34
L Problem bei Rechnung mit Math.pow Java Basics - Anfänger-Themen 13
L Geteilt Rechnung mit Nachkomma? Java Basics - Anfänger-Themen 4
S Uhrzeit Rechnung Java Basics - Anfänger-Themen 8
3 Taschrechner Rechnung durchführen Java Basics - Anfänger-Themen 8
K Rechnung in Java Java Basics - Anfänger-Themen 6
S Wie Typecaste ich nur das Ergebniss einer Rechnung ? Java Basics - Anfänger-Themen 7
B Rechnung ohne Klammer liefert komisches Ergebniss Java Basics - Anfänger-Themen 3
M Vektor Rechnung Java Basics - Anfänger-Themen 6
V Erste Schritte Einfache Rechnung mit Exponenten Java Basics - Anfänger-Themen 3
R Erste Schritte Taschenrechner - Punkt-vor-Strich Rechnung Java Basics - Anfänger-Themen 1
S Variablen Rechenzeichen als Variablen in Rechnung einbinden Java Basics - Anfänger-Themen 4
L Erste Schritte Programm Bestellung/Rechnung addieren Java Basics - Anfänger-Themen 3
M Erste Schritte Nachkommastellen falsch bei Rechnung Java Basics - Anfänger-Themen 3
E Problem mit modulo Rechnung Java Basics - Anfänger-Themen 8
L Rechnung Java Basics - Anfänger-Themen 13
C String Rechnung in Int Java Basics - Anfänger-Themen 8
D Mathematische Rechnung als String Java Basics - Anfänger-Themen 4
M Einfache Rechnung(R=U/I) Java Basics - Anfänger-Themen 12
B Rechnung per Hand anders als von Java Java Basics - Anfänger-Themen 6
F Mal rechnung Java Basics - Anfänger-Themen 2
M Normale Rechnung - komisches Ergebnis. Java Basics - Anfänger-Themen 10
truesoul Skalierungs-Rechnung Java Basics - Anfänger-Themen 2
B Frage zu einfacher Rechnung Java Basics - Anfänger-Themen 3
K Kombifeld auswählen, rechnung sofort ausführen Java Basics - Anfänger-Themen 11
G Eingebener Wert nach Rechnung wieder original ausgeben. Java Basics - Anfänger-Themen 6
A Sandhaufen Rechnung mit Schubkarre Java Basics - Anfänger-Themen 9
S Einfache Rechnung mit Schleife Java Basics - Anfänger-Themen 10
F Von int zu double bei einfacher Rechnung Java Basics - Anfänger-Themen 2
D Probleme bei einfacher Rechnung Java Basics - Anfänger-Themen 3
D Rechnung Java Basics - Anfänger-Themen 4
R switch erlaubt keine float/double-Rechnung Java Basics - Anfänger-Themen 5
T BMI Rechner fehlerhaft Java Basics - Anfänger-Themen 18
I InputStream beim zweiten Mal fehlerhaft Java Basics - Anfänger-Themen 10
E Warum lässt sich eine Klasse nicht starten, wenn eine andere Klasse in dem Modul fehlerhaft ist? Java Basics - Anfänger-Themen 1
U Ausgabe von Dateiinhalt während Programmnutzung fehlerhaft Java Basics - Anfänger-Themen 3
N Erste Schritte Quellcode fehlerhaft Java Basics - Anfänger-Themen 2
F (Eclipse) Beim importieren etwas fehlerhaft bitte um Hilfe :) Java Basics - Anfänger-Themen 3
P Compiler-Fehler if Bedingung fehlerhaft Java Basics - Anfänger-Themen 7
D kleiner Taschenrechner mit switch fehlerhaft Java Basics - Anfänger-Themen 1
T Unit tests fehlerhaft bitte um hiiiiilfe :D Java Basics - Anfänger-Themen 1
M Double-Ausgabe in JTextField fehlerhaft Java Basics - Anfänger-Themen 2
H Compiler-Fehler NullPointerException bei .length, Konstruktor fehlerhaft? Java Basics - Anfänger-Themen 3
S Methode prüft fehlerhaft nach Eingangsvariable Java Basics - Anfänger-Themen 2
C FileWriter bzw. Reader fehlerhaft Java Basics - Anfänger-Themen 6
D Code Fehlerhaft finde den Fehler nicht. Java Basics - Anfänger-Themen 1
W Erste Schritte Ausgabe ist Fehlerhaft Java Basics - Anfänger-Themen 6
F Erste Schritte IF-Abfrage fehlerhaft Java Basics - Anfänger-Themen 9
Z array ausgabe fehlerhaft Java Basics - Anfänger-Themen 2
U Array Ausgabe fehlerhaft Java Basics - Anfänger-Themen 6
S Java SDK Installiert aber fehlerhaft Java Basics - Anfänger-Themen 5
J HashSet Fehlerhaft Java Basics - Anfänger-Themen 10
N Bit -> Datei -> Bit Fehlerhaft Java Basics - Anfänger-Themen 2
H Methoden werden als fehlerhaft angezeigt Java Basics - Anfänger-Themen 2
M if/while, Ausgabe fehlerhaft! Java Basics - Anfänger-Themen 11
G Key Listener arbeitet Fehlerhaft Java Basics - Anfänger-Themen 6
S wsdl-datei: Generierung fehlerhaft Java Basics - Anfänger-Themen 9
D ClassLoader in der Jar fehlerhaft Java Basics - Anfänger-Themen 3
J Addition von double values fehlerhaft? Java Basics - Anfänger-Themen 5
S Calendar.set Time, Ermittlung der Anzahl Tage fehlerhaft Java Basics - Anfänger-Themen 9
T Java ist auch eine Insel: Beispielprogramm fehlerhaft? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben