При использовании этого сценария для простой векторной математики я могу добавить вектор скорости, когда значения являются целыми числами, такими как 1 и 2, но когда вектор скорости инициализируется с помощью float .5 нет движения. Насколько я могу сказать, питон не требую объявить терки или Int, но у меня есть ощущение, что полученное число усекаетсяДобавление вектора скорости к вектору позиции работает только с целыми числами
import pygame
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((800, 600))
background = pygame.Surface(screen.get_size())
rectangle = pygame.Rect(65, 45, 50, 50)
class Vector2D:
def __init__(self, x, y):
self.x = x
self.y = y
def __iadd__(self, vector):
self.x += vector.x
self.y += vector.y
return self
def __isub__(self, vector):
self.x -= vector.x
self.y -= vector.y
return self
def copy(self, vector):
self.x = vector.x
self.y = vector.y
speed = Vector2D(.5, .5)
going = True
while going:
#Handle Input Events
for event in pygame.event.get():
if event.type == QUIT:
going = False
elif event.type == KEYDOWN and event.key == K_ESCAPE:
going = False
rectangle.left += speed.x
rectangle.top += speed.y
#Draw Everything
screen.blit(background, (0, 0))
pygame.draw.rect(screen, (255, 255, 255), rectangle, 1)
pygame.display.flip()
pygame.quit()
прямоугольника координат могут быть snap to ints, поскольку theres нет такой вещи, как половина пикселя ... просто сделайте позицию позиции position = [0,0] и измените t hat –
У вас есть другая позиция Vector2D, которую вы обновляете. При необходимости добавьте в int, если вы установите 'rect.topleft = position' – ninMonkey