2010-07-09 2 views
2

현재 SurfaceView를 사용하여 Android 게임을 작성 중입니다. 가능한 한 많이 게임을 최적화했으며 게임이 원활하게 실행됩니다. 그러나, 나는 약간의 지저분한 충돌 감지 통합했습니다. 캔버스에서 직접 픽셀을 읽음으로써 충돌 감지를하고 싶습니다. 가능한가요? 필자가 발견 한 가장 가까운 것은 setBitmap을 사용하여 캔버스에 새로운 비트 맵을 첨부하는 것입니다. 그런 다음 캔버스에 그릴 때 비트 맵이 업데이트됩니다. 이것이 갈 길입니까? 감사. Canvas API에서Android Canvas에서 픽셀 값 가져 오기

답변

0

:

캔버스 클래스는 "그리는" 전화를 보유하고 있습니다. 그림을 그리려면 픽셀을 포함하는 비트 맵, 드로잉을 호스트 할 캔버스 (비트 맵에 쓰기), 드로잉 프리미티브 (예 : Rect, Path, 텍스트, 비트 맵)를 호스트하는 비트 맵, 페인트 ( 은 도면의 색상과 스타일을 설명합니다).

캔버스 자체가 픽셀 데이터를 실제로 소유하지 않기 때문에 캔버스에 픽셀 데이터를 요청하지 않아도됩니다. 그리기 호출에 사용하는 캔바스는 항상 비트 맵 (그리는 것)에 연결되므로 비트 맵에서 픽셀 데이터를 가져와야합니다.

충돌 감지는 일반적으로 비용이 많이 들지만 비트 맵 기반 프로세스로 전환하면 수행하려는 작업에 따라 더 심해질 수 있습니다. 그냥 머리를 올려.

0

나는 Josh와 동의한다. 앱에서 정밀도가 중요하다면 화면 크기/해상도 데이터를 일종의 물리 엔진에 통합 할 수 있습니다. 시각적 처리에 전적으로 기초하여 물리 엔진을 구축하려는 시도는 아마도 불필요한 비용이 듭니다.

1

다른 방법으로 충돌 감지를 관리해야하지만, 당신은 코드의 다음 줄에 주어진 위치에있는 픽셀의 색상을 얻을 수 있습니다 :

mView.mBitmap.getPixel(j, i) 

MVIEW는 캔버스와 mBitmap을 포함하는보기입니다 캔버스를 만든 비트 맵입니다 :

Canvas mCanvas = new Canvas(mBitmap);