Если я смогу получить некоторую помощь, я опубликую больше этого кода.Это немного странно.Я взял это из видео и немного почистил.По сути, он фиксирует все x координаты в cam.pos[0]
, все y координаты в cam.pos[1]
и все z координаты в cam.pos[2]
.В моей трехмерной среде есть несколько десятков кубов, из которых я могу двигаться, далеко, выше, ниже, влево и вправо.Но я не могу повернуться.Это моя попытка штопора:
while True:
dt = clock.tick()/1000
rot = clock.tick()/1000
r = rot*36
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_x:
cam.pos[0] = cam.pos[0]*np.cos(r)-cam.pos[1]*np.sin(r)
cam.pos[1] = cam.pos[0]*np.sin(r)-cam.pos[1]*np.cos(r)
cam.pos[2] = cam.pos[2]
if event.type == pygame.QUIT: pygame.quit(); sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE: pygame.quit(); sys.exit()
cam.events(event)
screen.fill((0,0,0))
face_list = []; face_color = []; depth = []
for obj in cubes:
vert_list = []; screen_coords = []
for x,y,z in obj.verts:
x-=cam.pos[0]; y-=cam.pos[1]; z-=cam.pos[2]
Я могу опубликовать больше, если кому-то интересно.Он не возвращает никаких ошибок, но и не является штопором.Спасибо.
По какой-то причине удаление кода не работает.Вы можете посмотреть его здесь: python_flyer
Вы можете видеть, что я внес изменения:
datax = cam.pos[0]
datay = cam.pos[1]
for i in range(datax):
for j in range(datay):
cam.pos[0] = i * np.cos(r) - j * np.sin(r)
cam.pos[1] = i * np.sin(r) - j * np.cos(r)
Ошибка теперь:
for i in range(datax):
TypeError: 'float' object cannot be interpreted as an integer
Я называю это прогрессом