2016-02-11 3 views
1

Я имею дело с обнаружением столкновения с некоторыми анимированными видами, и я оживляю некоторые представления альфа-изображений. Что происходит, так это то, что обнаружение столкновения срабатывает, даже когда второй объект находится на прозрачной части ImageView, когда он, по-видимому, не касается, но контейнер ImageView представляет собой прямоугольное поле, которое превышает границы изображения.Как сделать вид Android отличным от прямоугольника

Как я могу определить, когда он касается нарисованной части изображения или делает контейнер треугольником?

Вот как Im обнаружения столкновения между двумя точками зрения:

public boolean checkCollision(View v1, View v2) { 
    if (v1 == null || v2 == null) { 
     log.e("Views must not be null"); 
     throw new IllegalArgumentException("Views mut be not null"); 
    } 
    Rect R1 = new Rect(); 
    v1.getHitRect(R1); 
    Rect R2 = new Rect(); 
    v2.getHitRect(R2); 
    return Rect.intersects(R1, R2); 
} 
+1

Зачем вам такое обнаружение столкновения? Если речь идет о логике игры или аналогичной, есть и другие, более подходящие способы сделать это, например, как OpenGL или игровые среды. – marktani

+1

@mcwise Да, это базовая игра, но единственное ограничение - не иметь никаких фреймворков, чтобы сделать ее максимально легкой. Знаете ли вы какую-либо стороннюю библиотеку, которая может помочь мне в этом? –

ответ

0

То, что я бы рекомендовал делать это сделать первоначальную проверку ограничительных рамок просто чтобы увидеть, если вам нужно выполнить более точную проверку. Этот шаг является необязательным, если у вас есть только несколько объектов, сталкивающихся, но если их у них много, это сэкономит много производительности. Если вам нужно сделать дополнительную проверку, сделайте точки вокруг изображения, где вы знаете, что есть сплошная текстура, а затем проверьте наличие столкновения с этими точками. Я могу попробовать и получить вам код для этого, если вы хотите, но посмотрите здесь этот вопрос, который объясняет вещи в глубину. https://gamedev.stackexchange.com/questions/30866/collision-detection-with-non-rectangular-images