Sep 30
Für mein aktuelles Freizeitprojekt, ja ich bin ein Hobby-Spiele-Entwickler bzw. versuche einer zu sein, wollte ich eine Kamera haben die dem Ziel folgt. Allerdings soll der Kameraschwenk nicht statisch sein (1:1) sondern je nach Geschwindigkeit des Ziels etwas an Dynamik gewinnen. Da man das Rad nicht 100k mal neu erfinden möchte, sucht man halt nach einigen Code-Schnippseln. Meine Suche hatte erfolgt
void update(float delta) {
Entity target = getTarget();
Entity camera = getCamera();
final float threshold = ...;
final float feelFactor = ...;
Vector2f difference = target.getPosition().sub(camera.getPosition());
float distance = difference.length();
if (distance > threshold) {
Vector2f direction = difference.norm();
float speed = (distance - threshold) * feelFactor;
Vector2f newPosition = camera.getPosition().add(direction * speed);
camera.setPosition(newPosition)
}
}
Das Fragment ist eigentlich selbsterklärend. Falls jemand Hilfe dabei braucht, ihr habt die Kommentar-Funktion 
Jun 27
Ihr kennt auch manchmal das Problem Durchschnittswerte zu berechnen, habt aber keine Lust eine Liste von Ergebnissen mit rumzuschleppen und die Ergebnisse durch die Anzahl der Elemente zu teilen (oder so ähnlich)? Dann kann ein bisschen Mathematik abhilfe schaffen:
/**
* Calculates the average value
* @param currentAverage
* current average value
* @param sample
* new value which needs to be integrated into average
* @param n
* iteration count
*/
public float calculateAvrgValue(float currentAverage, float sample, int n) {
return ((currentAverage * (float) n + sample) / (n + 1));
}
Feb 06
Wie bekommt man den absoluten Pfad der Anwendung im laufenden Programm heraus? In VB gibt es den praktischen Aufruf “App.path“. In Java muss man einen kleinen Umweg in Kauf nehmen und zwar über die “System Properties: System.getProperty(key)“.
String classPath = System.getProperty("java.class.path");
String pathSeparator = System.getProperty("path.separator");
// Theoretisch können mehrere Pfade im Klassenpfad (Class-Path) angegeben sein.
// Z.B. um externe Libraries zu laden. Die erste Pfadangabe sollte das Objekt der
// Begierde sein, der Ausführungspfad.
String appPath = classPath.split(pathSeparator)[0];
Jan 20
Wie kann man möglichst schnell und ohne viel Aufwand einen XML-Parser in Java, mit den standard Libraries schreiben? Ganz einfach…
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
// [...]
function parseXML(File file) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(file);
NodeList nodeList = doc.getDocumentElement().getChildNodes();
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
if (node instanceof Element) {
Element element = (Element) node;
String tagName = element.getTagName();
if ("info".equalsIgnoreCase(tagName)) doSomething(element);
}
}
getSpriteImages(sp, file);
} catch (Exception e) {
e.printStackTrace();
}
}
Recent Comments