팩맨처럼 게임을 만들려고합니다. 나는 다음과 같습니다 배열을 가지고 :매우 간단한 타일 기반 게임에 문제가 발생했습니다.
배열 :
1111111111111
1000000000001
1111110111111
1000000000001
1111111111111
1 = 벽, 0 = 빈 공간
I의 크기는 16 × 16있는 타일을 그릴이 배열을 사용합니다. 게임 캐릭터는 32x32입니다.
처음에 I 어레이 인덱스에서 캐릭터의 위치를 나타내는 [1,1] 등
I가 그의 위치를 갱신 할경우 배열 [character.new_y] charater.new_x] == 0
나는이 배열 좌표를 픽셀로 변환하여 [y * 16, x * 16] 그를 그렸다.
그는 멋지게 줄을 서고 있었지만 벽에 들지는 않았지만 나는 그를 16 픽셀 씩 업데이트했기 때문에 매우 빠르게 움직이고 있었다.
게임 캐릭터의 위치를 픽셀 단위로 저장하기 위해 역순으로 결정 했으므로 이동 당 16 픽셀 미만을 사용할 수 있습니다.
if array[(character.new_pixel_y)/16][(character.new_pixel_x)/16] == 0
벽으로가는 그를 방지 할 수 있지만, 불행하게도 그는 하단과 오른쪽의 벽을 조금 먹는 :
나는 이와 같은 간단한 if 문이 있다고 생각했다.어떻게하면 픽셀 인덱스 위치를 배열 인덱스로 올바르게 변환 할 수 있습니까? 이것은 단순한 것 같지만 실제로 이해할 수는 없습니다 : (
안녕하세요, 16x16 타일은 반으로 비어있어 게임 캐릭터가 서로 딱 맞습니다 (기술적으로는 일부는 겹치지 만). 배열에 관해서는, 미안하다, 그것은 내 어리석은 명명 규칙이었다. – newbieguy
아!실제로, 나는 16 픽셀을 중심으로 하루 종일 노력하고 있었고, 모두 8 픽셀을 중심으로 중심을 잡아 당겼다. 그리고 나서 그의 위쪽/왼쪽/오른쪽/아래쪽 방향을 기준으로 8 픽셀을 조정하여 덕분에 – newbieguy
드로잉이 수행되었다. 왼쪽 상단과 타일은 16 배 더 큽니다. 우리는 32x 타일이 HALF와 16x 타일 = 8 픽셀로 겹쳐 져야한다는 것을 알고 있습니다. :) – Shaggieh