OpenGL реалистичное автомобильное движение - PullRequest
0 голосов
/ 05 октября 2018

У меня есть проблема на данный момент довольно долгое время ... В моей игре OpenGL, как вы можете видеть на картинке, это автомобиль с высотой местности.

Итак, чтобы рассчитать угол дляНа машине я создал 4 ящика, которые следуют вокруг машины, поэтому они всегда имеют одинаковую позицию относительно поворота машины.Так что мой алгоритм для этого работает довольно хорошо, но когда я управляю машиной, он становится бесполезным, потому что я вращаюсь только вокруг статических осей X и Z декартовой системы координат.Кто-нибудь знает, как «двигается» сплошная ось, чтобы я мог вращаться вокруг нее как обычная ось?Или моей второй идеей было что-то о взаимосвязи между вращением и вращением ...

Pls help: (

enter image description here

Вот мой код:

Vector3f x1 = new Vector3f(26, cubex1.getPosition().y, 0);
            Vector3f x2 = new Vector3f(0, cubex2.getPosition().y, 0);

            Vector3f xdif = new Vector3f(x1.x - x2.x, x1.y - x2.y, x1.z - x2.z);

            float anglex = -(float) Math.toDegrees(cubex1.getPosition().angle(xdif, new Vector3f(1, 0, 0)));


            if(cubex1.getPosition().y < cubex2.getPosition().y){
                super.setRotX(-anglex);
            }else{
                super.setRotX(anglex);
            }

            Vector3f z1 = new Vector3f(0, cubez1.getPosition().y, 14);
            Vector3f z2 = new Vector3f(0, cubez2.getPosition().y, 0);

            Vector3f zdif = new Vector3f(z1.x - z2.x, z1.y - z2.y, z1.z - z2.z);

            float anglez = -(float) Math.toDegrees(cubez1.getPosition().angle(zdif, new Vector3f(0, 0, 1)));

            super.setRotZ(anglearoundplayer / anglez);


            if(cubez1.getPosition().y < cubez2.getPosition().y){
                super.setRotZ(-anglez);
            }else{
                super.setRotZ(anglez);
            }

Я использую векторы разных полей, чтобы получить угол относительно плоской поверхности ...

...