Intereting Posts
Android: удалить только нижний эффект FadingEdge из полосы прокрутки Загрузите прогресс с помощью RxJava, OkHttp и Okio в Android Как найти планшет или телефон в Android, программно? Bluetooth LE ScanFilters не работают на Android M Android 4.0.4 BLE API, BroadCom – Motorola Существует ли замена виджета Gallery с View recycling? Объясните стратегию переходных зависимостей, описанную в документации Android Build System Android устанавливает привязку потоков Масштабирование вокруг определенной точки в системе координат 2d Изображение Android выбрано из галереи Ориентация всегда 0: Exif TAG Android Build Tools создает только x86_64, несмотря ни на что. APK запускается через adb, но демонстрирует несовместимость в Play Маркете Как сохранить данные из edittext в базу данных android sqlite? Какую технику хранения данных Android использовать? Как реализовать searchview в действии (панели действий), когда listview существует во фрагменте Android Fatal Signal 7 (SIGBUS)

Сбор объекта не работает?

У меня есть следующий метод, который вызывается, когда пользователь нажимает позицию на экране:

public void setup(int xi, int yi){ int f = 0; PerspectiveCamera camera = new PerspectiveCamera(); camera.setViewport(320, 508); camera.update(); Ray touch = camera.getPickRay(xi, yi); while(f < GLCamTest.array.length){ //Vertex 1 float x1 = GLCamTest.array[f]; f++; float y1 = GLCamTest.array[f]; f++; float z1 = GLCamTest.array[f]; f++; //Vertex 2 float x2 = GLCamTest.array[f]; f++; float y2 = GLCamTest.array[f]; f++; float z2 = GLCamTest.array[f]; f++; //Vertex 3 float x4 = GLCamTest.array[f]; f++; float y4 = GLCamTest.array[f]; f++; float z4 = GLCamTest.array[f]; f++; //Vertex 4 float x5 = GLCamTest.array[f]; f++; float y5 = GLCamTest.array[f]; f++; float z5 = GLCamTest.array[f]; f++; Intersector sect = new Intersector(); float z3 = 10; //Mid-point formula float x3 = (x2+x4)/2; float y3 = (y2+y4)/2; //Triangle one is (x1,y1), (x2,y2), (x3, y3) //Triangle two is (x4, y4), (x5, y5), (x3, y3) //Now, I have my 2 tri-angles I need for the // Polygon test.. Vector3 t1 = new Vector3(x1,y1,z1); Vector3 t2 = new Vector3(x2,y2,z2); Vector3 t3 = new Vector3(x3,y3,z3); Vector3 t4 = new Vector3(x4,y4,z4); Vector3 t5 = new Vector3(x5,y5,z5); if(sect.intersectRayTriangle(touch, t1, t2, t3, t4) == true){ System.out.println("TOUCHED AN OBJECT!!"); if (f <= 12){ System.out.println("SQUARE 1"); } else if(f <= 24 && f >=13){ System.out.println("SQUARE 2"); } else if(f <= 36 && f >= 25){ System.out.println("SQUARE 3"); } } if(sect.intersectRayTriangle(touch, t4, t5, t3, t1) == true){ System.out.println("TOUCHED AN OBJECT!!"); if (f <= 12){ System.out.println("SQUARE 1"); } else if(f <= 24 && f >=13){ System.out.println("SQUARE 2"); } else if(f <= 36 && f >= 25){ System.out.println("SQUARE 3"); } }else{ System.out.println("NO TOUCH"); } } f = 0; } 

В основном класс принимает в экранные координаты, которые были нажаты, настраивает окно просмотра и все матрицы, которые он затем генерирует. Как только луч сгенерирован, он берет каждую вершину и помещает ее в свой собственный Vector3 тогда он проверяет, пересекает ли луч любую из точек. Метод говорит, что луч пересекает "SQUARE2" в определенных точках на экране, независимо от того, есть ли там объект или нет. Почему? Что может быть причиной этого? Как это исправить?

редактировать:

Он нажимает оператор if «SQUARE2» каждый раз, когда он считает, что он «находит» объект. Он находит только пересечение, когда я нажимаю «средний» экран (это объекты могут быть нарисованы), но он показывает только пересечение для Первый оператор if в левой части середины экрана, а второй для правой стороны середины экрана

Так, например, это только думает, что это коснулось квадрата 2 в точках, обозначенных X, где Rectangle – экран телефона.

  _________ | | | | |XX| | | |_______| 

Другие методы, которые я призываю для трассировки лучей, находятся в другом проекте .. http://code.google.com/p/libgdx/source/browse/#svn/trunk/gdx/src/com/badlogic/ Gdx / math (в папке Graphics есть Perspective Camera, которая содержит getPickRay(); а Intersector содержит другую).

Edit2: Кажется, он поднимает правильное место, где объекты МОГУТ быть, но в настоящее время они могут быть не из-за вращения мира, поэтому у него, похоже, возникают проблемы с вращением мира. Вот как я вращаю мир …

  public void onDrawFrame(GL10 gl) { onDrawFrameCounter++; gl.glEnable(GL10.GL_TEXTURE_2D); gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); bindCameraTexture(gl); float bear = Global.bearing; gl.glLoadIdentity(); gl.glNormal3f(0,0,1); gl.glRotatef(bear, 0, 1, 0); int e = 0; for(int q=0; q < Global.cubes;q++){ gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, e, 4); e = e+4; } } 

Как мне настроить свой код так, чтобы он узнал, когда объекты НАСТОЯТЕЛЬНО отображаются на экране?

Solutions Collecting From Web of "Сбор объекта не работает?"