안드로이드를위한 프로그래밍 게임

안드로이드를위한 프로그래밍 게임 19: 충돌을 감지

42 동영상

238 의사록

내가 분명히 관심이 내 플레이어가 스파이크 중 하나에 의해 공격을 받았습니다 알고 있기 때문에 이제 충돌에 대해 얘기하자. 내가 제일 먼저에 대한보고입니다 객체의 경계를 얻는 단계 클래스 및 디버그 모드가 한가지. 내가 디버그 모드로 전환하는 방법을 보여 드리겠습니다 구체적으로 우리가 무대에있는 배우를보고, 그 이유를 이해할 것이다. 우선 우리가 실행할 때 것을 나타 내기 위해 setDebugAll 메소드를 호출

객체의 가장자리를 나타낸다. 우리가 true를 전달하면, 배우 테두리하는 라인에있는 각 개체의 가장자리 그래서 우리는 당신의 제한이 나타납니다 알고있다. 배우에게 약간의 크기를 제공하는 일을해야하고, 우리가하지 않은, 난 단지 위치를 부여했습니다. 내가 할 첫 번째 일은 줄입니다 배우의 치수. 텍스처와 TextureRegions이 방법을 가지고 있기 때문에 그리고, 제조업체에서 직접이 작업을 수행 할 수 있습니다

폭과 질감의 높이 및 내 배우를 이야기하는 것이 적합, '이봐, (에는 setSize와) 새로운 사이즈) (pinchos.getRegionWidth입니다 . 상기 영역의 폭, pinchos.getRegionHeight (), 높은 얻기위한 '따라서 우리는 얼마나 높이 ActorPinchos을 알고있다 : 이는 질감을 측정한다. ActorJugador와 동일합니다. 이것은 내가 처음 비디오에서 그것을했기 때문에 당신이 알고있는 무엇 : getWidth ()와 getHeight ()를.

이것은 우리가 그것의 크기를 필요로하기 때문에, 그것은 우리가 직접 그린 가장자리 지금 주위에 보게 될 얻을 수 있습니다,이 기타와 함께 우리의 문자. 이 더 많거나 우리가 할 수있는 일 이하는 한계가 있으며, 우리가 감지 할 수있는 방법을보고 도움이 될 것입니다 결정하는 것입니다 충돌이 있었다 때. 나는 충돌을 관리하는 방법을 이해하는 것이 나의은 Skitch로 돌아갑니다. 그곳을 관리하기위한 더 나은 방법이 있으며, 곧

이제 우리는 Box2D의, 우리가 게임에 사실적인 물리학을 추가 할 수 있습니다 매우 흥미로운 기술을 도입 시작할 수있는 방법을 보자, 보다 나은 검출 방법 충돌이 얻어진다. 순간을 위해 우리는 나중에 입을 열 수있는 간단한 알고리즘을 얻는 방법을 연구한다. 이 시점에서 우리는 광장에 우리 배우를 줄일 수 있습니다. 모든 배우, 사실입니다. 우리는 플레이어를 가지고 꼬치있다.

스파이크는 배우와 충돌 한 즉, 때 무엇 우리가 관심을 끄는 것은이 발생했을 때를 감지하는 것입니다. 분명히 볼 수있는 간단한 방법이있다 때 우리가 공격; 여기에서 우리는 플레이어의 X 위치에 대응하는 것이 수직 라인을 가지고있다. 우리는) 그것을 (setX를 말할 때 우리의 기원은 왼쪽에 표시된 좌표 있기 때문에이 라인을 얻을 수있는 곳입니다 나타냅니다. 우리는 넓은 배우 무엇인지

그래서 X의 +의 폭의 합을 오른쪽 가장자리를 결정하기 쉽습니다. 마찬가지로, 우리는 우리의 꼬치의 왼쪽 가장자리를 얻을 수 있습니다 꼬치의 경우에는 X를 사용. 충돌이 발생하면 재미있는 일이 발생합니다 충돌이 발생 왼쪽 가장자리 때문에 우리 ActorPinchos 스파이크의 + X 너비 값보다 가치가 좌측, 즉 X에 이상이다. 우리는 pinchos.x 사이의 비교를 한 경우

및 (jugador.x jugador.width +), 무슨 일이 충돌이 전자가 초보다 작기 때문에되어 있다는 것이다. 이 조건이 참이면, 스파이크는 플레이어에 그대로이기 때문에 충돌이있다. 이는 충돌을 검출하는 제 전략이다. 무승부를 호출하기 전에 렌더링 방법을 사용하여 () 메서드 호출은 이제 만듭니다 comprobarColisiones ()를 호출. 약간의 차이에 대한이있다

때 업데이트 그려합니다. 속지 마십시오 : 항상 Actualizad 그리기 전에. 그렇게하지 ​​않으면 때문에, 만약 당신이 다른 방식으로 할 경우, 즉, () 무승부를 meteis 첫째, 당신은 충돌 행위를 () 한 후 확인할 수 있기 때문에, 문제가, 그리고 행동 ()는 될 수 없습니다 플레이어는 지켜보고있다. 추첨으로 () 플레이어가 인식하지 않는 전에 이루어졌다. 움직임이 많은 문제가있는 게임에서는,

모든 준비 dibujadlo 인 경우 그래서 먼저 업데이트 및 검사 그리고 마지막으로 할 것. 특히 Box2D의 함께,이 매우 중요하다. 내가 할 것이다 마지막 것은 방법은 내가 말한 것을 확인하는 ()를 comprobarColisiones를 작성합니다. 제 플레이어의 우단보다 크면 충돌이 되었기 때문에 내 스파이크의 좌단이다. 좋은 시간은 기본적으로 플레이어를 죽일. 르 나는 조건을 넣을 수 있습니다

그것은 살아있다, 그리고 게터와 세터가 나는 수정하거나 내 플레이어가 살아 아닌지 확인할 수 있습니다. 지금은 무엇을, 마지막으로 플레이어는 살아 있다는 것입니다 경우 그는 충돌 인쇄, 충돌했다. 나는 스파이크를 이동하는 동안 메시지 충돌이 준수되지 않은 경우는 수십 번을 표시하기 때문에,이 작업을 수행 할 수 있습니다. 웰빙 완료하면 setAlive 다시 사실이 아니다 가치가 false로 구성되어있다. 이 인쇄를 방지하는 것입니다

종종 메시지 충돌. 이것은 다소 원유 더러운 방법이지만 수학적 모델에 의해 확인있게 ... - 좋아. 그것이 작동하지 않는 이유를 확인할 수 있습니다. 아마 당신은이 넣어 잊어 때문이다. 사실 그래. 이 내용을 용서 : 당신이 게임, 라이브 시작을 시작할 때. 네 지금 요. 그는 충돌이 있었다 때 같은 사각형과 같은 기본적인 기하학적 모델에서 우리가 볼 수 있다고 말했다. 이 기술은 경계 박스를 호출한다.

이 충돌하지만 기본적인 2D 게임입니다을 확인하는 가장 좋은 기술이 아니다. 그러나, Box2D의 함께 우리는 물리적 통합에 더 좋은 시스템을 가지고있다.

새로운 코스를 찾으려면 가입. 아무 스팸 없을 것, 약속 :)

저자에 관하여

foto de jotajotavm
José Javier Villena

전기 : 다른 언어 분석 - 프로그래머. 교사 PREMIUM 플랫폼은 CodigoFacilito으로 세계적으로 인정. 에디터 Cristalab 기사. 내 YouTube 채널은 아나야와 LaTostadora 출판사가 후원한다. 나는 상세히 설명하고 의심의 소지를 없애기위한 몇 가지 예를주는 것을 좋아합니다.