Я делаю маленькую платформерную игру, используя pygame, и решил, что создание редактора уровней для каждого уровня будет проще, чем набирать координаты и размер каждого блока.pygame - Snap Mouse to Grid
Я использую набор линий по горизонтали и вертикали, чтобы сделать сетку проще.
Вот код для моей сетки:
def makeGrid(surface, width, height, spacing):
for x in range(0, width, spacing):
pygame.draw.line(surface, BLACK, (x,0), (x, height))
for y in range(0, height, spacing):
pygame.draw.line(surface, BLACK, (0,y), (width, y))
Я хочу мыши пользователя, чтобы перейти на 10 пикселей с интервалом, чтобы двигаться только в точках пересечения. Вот что я пытался заставить мышь привязать к сетке.
def snapToGrid(mousePos):
if 0 < mousePos[0] < DISPLAYWIDTH and 0 < mousePos[1] < 700:
pygame.mouse.set_pos(roundCoords(mousePos[0],mousePos[1]))
(BTV, roundCoords() возвращает координаты с округлением до ближайших десяти единицы.)
(Также BTV, SnapToGrid() вызывается внутри основного игрового цикла (пока не сделано))
... но this бывает, мышь не хочет двигаться нигде.
Любые предложения по устранению этого? Если мне нужно, я тоже могу изменить код сетки. Спасибо, кучка.
P.S. Это использует последнюю версию PyGame на 64-битном Python. 2.7
Мне это очень нравится, спасибо. Проблема только в том, что предыдущий круг не исчезает. –
Я не знаю, насколько это возможно для вас, но обычно я обычно размахиваю своим фоном на каждом кадре и снова наполняю его. Так что в вашем случае я бы 1) blit на белом фоне, 2) blit сетку, 3) blit круг, на каждом отдельном фрейме. – Sorade
То, что я сделал, было blit еще одним кругом над столом с тем же цветом, что и фон, поэтому точка выглядит как пространство в сетке вместо точки. –