2014-01-12 4 views
0

그래서 당신은 무엇을 캔버스

을 볼 수 있습니다 .. 모두 연습과 재미 전에 그것과 아무 상관이 없었어요 (내가 시도 처음으로)에 대한 약간의 게임을 만들려고 노력하고 I 지금까지 시도한 바 : 은 6 ~ 8 시간 정도 작업하고 있습니다. 지금까지 나는 계속하기 전에 더 잘 물어볼 것임을 깨달았다.

내가 지금 가지고있는 방식대로 매 20 밀리 초마다 실행되는 메인 루프가 있습니다.

  1. 핸들 키 입력 (장애물 배열을 통해 어떤 반복하고 플레이어의 미래 위치가 장애물 개체를 충돌 여부를 확인하고 미래의 위치 값으로 선수들의 속성을 변경) : Ihis 루프는이 함수를 호출합니다.

  2. "필요 업데이트"배열을 거치고 요소의 CSS 세부 정보를 변경하여 변경 내용을 반영합니다.

    • 좋은 생각이 위의 충돌을 처리하는 것입니다 :

내가 몇 가지 질문이? 만약 더 좋은 방법이 없다면 (게임에서지도 상에 약 800-1500 개의 장애 오브젝트가 있음을 의미합니다).

  • 거리를 계산하려면 2 포인트 방정식 사이의 거리를 사용하십시오. 단지 1 포인트, 각도 및 거리 만 있으면. 어떻게 두 번째 점 (x, y)을 찾을 수 있습니까?

  • 더 나은, 캔버스 또는 DOM 무엇입니까? (중요한 문제는 DOM으로 이미 완성했기 때문이 아닙니다.)

  • +0

    "무엇이 더 나은가"라는 단어가 포함 된 질문에 대한 유일하게 유효한 대답은 "의존적"입니다. – Philipp

    +0

    네가 중요한 것은 지금까지 DOM에서했던 것처럼 중요한 것은 아니지만, 더 중요한 것은 담합이다. 그리고 제 2 점을 계산하는 것. –

    +0

    나를 고쳐 주셔서 고마워. 고정. –

    답변

    0

    모두에게 감사드립니다.

    내가 찾고있는 해결책을 찾았습니다.

    충돌에 대해 내가하고있는 방식은 완전히 잘못되었습니다. 정확한 길을 더 멀리 나열합니다.

    거리 - 플레이어의 발걸음이 멀어지면 플레이어의 현재 위치에서 거리를 확인하고 거리에서 거리를 뺀 다음 그 거리를 걷는 방법을 생각해 볼 수 있습니다.

    canvas vs dom - 두 사람 모두 cron과 pros가 있습니다.

    이제 충돌의 경우 픽셀 맵 배열을 만드는 것이 올바른 방법입니다. 캔버스 또는 컨테이너 노드가 너비 : 800x 높이 : 500 인 경우 해당 픽스를 나타내는 2 차원 배열을 갖습니다.

    그런 다음 위치를 확인할 때 플레이어의 현재 위치 + 향후 위치로의 단계가 있는지 객체. 그래서 같은

    는 :

    if(array[300][500]){ 
        return false; 
    } 
    

    내가 발견 무슨 그.

    누구든지 더 나은 해결책이 있다면 알려주세요.