Witam,
Mam pewien problem z nadaniem rotacji obiektowi, którym się poruszam za pomocą klawiszy W (przód) i S (tył). Przyciskami A i D będę się posługiwał w tym celu.
public void render() {
...
if(Gdx.input.isKeyPressed(Keys.A))
{
Vector3 vec2 = new Vector3(xSz+100, ySz, zSz+100);
//matrix.setToRotation(vec, angle++);
instance.transform.setToRotation(vec, vec2);
//instance.transform.
}
...
vec.set(xSz, ySz, zSz);
instance.transform.setToTranslation(vec);
modelBatch.begin(cam);
modelBatch.render(instance, lights);
modelBatch.render(instanceField, lights);
modelBatch.end();
batch.setProjectionMatrix(camera.combined);
}
instance - obiekt poruszany,
instanceField - przestrzeń po której się poruszamy,
Vector3 vec - wektor, posiadający współrzędne obiektu,
Vector3 vec2 - inny wektor, który miał mi pomóc, ale pomimo licznych prób, nie udało się :(
cam - to oczywiście kamera, która wpatruje się w obiekt, ale nie podąża za nim - to postaram się rozwikłać później.
Do rotacji używałem metod znajdujących się w obiekcie instance.transform.* - są 4 setToRotation() oraz 4 rotate(). Jedyne co mi się udało zrobić to obracać kamerą dokoła własnej osi, NIE obiektu, wpatrując się przy tym w obiekt - cam.rotate(matrix);
Ktoś zdolny jest mi dokładnie wytłumaczyć na czym polega problem i której funkcji powinienem użyć do obracania obiektu? Nie pogardziłbym też jakimiś konkretnymi informacjami na temat obiektu Matrix4 - do czego służy itd. Doczytałem, że odopwiada za 'matrycę'(może rendering, ale w jaki sposób i po co?) i nie może zawierać mniej niż 16 zmiennych(punktów) float (4x4).
Za odpowiedź i pomoc z góry wielkie dzięki. :)