2014-01-19 3 views
0

У меня есть этот фрагмент кода:Python - Pygame. Как отключить/корень движения мыши, когда спрайты сталкиваются?

end_hist_list = pygame.sprite.spritecollide(self, end_walls, False) 

for end in end_hist_list: 
    end_sound.play() 
    #now need to root position of mouse/or disable mouse movement 

Итак, когда этот спрайт (игрок) сталкивается с end_wall, что мне нужно для мыши, чтобы не быть в состоянии двигаться, только корень в этом положении (при том, что столкновение произошло) , Но я не могу найти какую-либо функцию, которая позволяла бы отключать или корневую мышь. Я попытался переставить позицию в координаты end_walls, но затем он сбрасывается рядом с этим спрайтом, но не поверх него. Я думаю, что должен быть какой-то простой способ сделать это, я просто не вижу его. Какие-либо предложения?

P.S. мыши управляет игрок спрайтов (в конце spritecollide это self) так:

def update(self): 
    """ Update player position """ 
    pos = pygame.mouse.get_pos() 
    self.rect.x = pos[0] 
    self.rect.y = pos[1] 

ответ

1

Как и mouse.get_pos, есть mouse.set_pos. Вы можете использовать это, чтобы вернуть мышку в нужную позицию, когда игрок попытается ее отодвинуть. Фактически, вы изменить текущую update:

pygame.mouse.set_pos(self.rect.x, self.rect.y) 

В качестве альтернативы, вы можете просто прекратить дело с событиями мыши. Если курсор виден, он все равно будет перемещаться, но игра проигнорирует его.

Смежные вопросы