1

나는 플랫폼을 만들고 있습니다. 여기에 내가 지금까지 가지고있는 것이있다 : http://megaswf.com/s/2486396 (주위를 돌아 다니고 화살 키로 점프한다).AS3 - BitmapData에서 주어진 x 좌표의 가장 높은 y 좌표 찾기

지상의 비트 맵 데이터를 사용하여 플레이어의 좌표와의 충돌을 테스트하고 플레이어가 몇 픽셀 (특히 오르막을 걷는 경우)에 바닥에 가라 앉고 있습니다. 이를 방지하기 위해 플레이어의 y 좌표를 즉시 변경하여 플레이어가지면 위에 앉아 있도록하고 싶습니다. 여기에 내가 일하고 있어요 무엇 :

if (groundClipBmpData.hitTest(rLoc, 255, bLocFuture)) { 
     playerClip.y = ??? 
    } 

내가 플레이어의 플레이어의 X 좌표에 groundClipBmpData의 가장 높은 픽셀가되기 위해 변경하는 Y 좌표합니다.

어떻게하면됩니까?

사용이처럼 while 대신 if

: 나는 다른 질문에 말했듯이

답변

0

가장 빠른 방법은 계산하고 저장하는 것입니다

while(groundClipBmpData.hitTest(rLoc, 255, playerClipBmpData, bLocFuture, 255)) 
{ 
     playerClip.y--; 
} 
playerClip.y++; 

가장 높은 값을 미리 좌표 배열 안에 넣은 다음 플레이어의 'x'위치를 사용하여 땅의 'y'를 결정합니다.

+0

감사 : 그것은 작동합니다. 그래도 가장 빠른 솔루션이라고 확신하지 못합니다. – Ashley

+0

아마도 그렇지 않습니까? 더 빠른 것을 원하십니까? 게임에서 '병목 현상'이라는 것을 발견하지 못하면 걱정하지 않겠습니다. 루프 전후에 getTimer()를 사용하여 컴퓨터에 걸리는 시간을 확인할 수 있습니다. after-before :이 시간은 밀리 초 단위로 나타납니다. 0 일 것으로 예상됩니다. – zehelvion