VIDEO<;我试着让白色矩形慢慢平滑地向红色矩形弯曲,然后停下来,但由于某种原因,白色矩形没有正确弯曲,并且它的移动方式很快,我希望它平滑地移动,平滑地弯曲,眼睛可以看到,同时也可以向红色矩形弯曲。有没有办法改变我的代码和让它像那样工作?
在我的curvemove rect类中,我有一个
self.yspeed=0.05 self.xspeed=-0.5 self.gravity=-0.01矩形移动的x和y速度以及影响它的重力
然后我在curvemove课上重画
这就是我的rect是如何移动的如果按下V键,那么它应该mave self.move true,然后它应该运行使对象弯曲的代码
if keys[pygame.K_v]:
curve_move1.move = True
if self.move:
curve_move1.x += curve_move1.xspeed
curve_move1.y += curve_move1.yspeed
curve_move1.yspeed += curve_move1.gravity
# curve it towards the red rectangle
else:
curve_move1.move2 = True
class curvemove:
def __init__(self,x,y,height,width,color):
self.x = x
self.y = y
self.height = height
self.width = width
self.color = color
self.rect = pygame.Rect(x,y,height,width)
self.yspeed = 0.05
self.xspeed = -0.5
self.gravity = -0.01
self.move = False
def draw(self):
self.rect.topleft = (self.x,self.y)
pygame.draw.rect(window,self.color,self.rect)
# -------------- curve_move1 is our curving rectangle
if keys[pygame.K_v]:
curve_move1.move = True
if self.move:
curve_move1.x += curve_move1.xspeed
curve_move1.y += curve_move1.yspeed
curve_move1.yspeed += curve_move1.gravity
# curve it towards the red rectangle
else:
curve_move1.move2 = True
完整的代码,它的所有矩形,所以你可以测试出来
import pygame
pygame.init()
# our window
window = pygame.display.set_mode((500,500))
pygame.display.set_caption("test map")
# our class
class curvemove:
def __init__(self,x,y,height,width,color):
self.x = x
self.y = y
self.height = height
self.width = width
self.color = color
self.rect = pygame.Rect(x,y,height,width)
self.yspeed = 0.05
self.xspeed = -0.5
self.gravity = -0.01
self.move = False
def draw(self):
self.rect.topleft = (self.x,self.y)
pygame.draw.rect(window,self.color,self.rect)
# -------------- curve_move1 is our curving rectangle
if keys[pygame.K_v]:
curve_move1.move = True
if self.move:
curve_move1.x += curve_move1.xspeed
curve_move1.y += curve_move1.yspeed
curve_move1.yspeed += curve_move1.gravity
# curve it towards the red rectangle
else:
curve_move1.move2 = True
white = 255,255,255
red = 205,0,10
curve_move1 = curvemove(250,400,50,50,white)
touched = curvemove(250,200,50,50,red)
# our game fps
fps = 60
clock = pygame.time.Clock()
# d redraw()
def redraw():
window.fill((0,0,0))
curve_move1.draw()
touched.draw()
# our main loop
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
keys = pygame.key.get_pressed()
if curve_move1.rect.colliderect(touched.rect):
curve_move1.move = False
redraw()
pygame.display.update()
pygame.quit()
我想要一种方法,使这个矩形平滑曲线向红色矩形不是快,但正常这是我最好的尝试
重力必须作用在目标的方向上
我建议使用^{} 进行计算。计算从物体到目标的方向向量,并将其缩放到重力的大小。根据每个帧中的重力更改运动矢量:
最简单的例子:
使用
speed
、gravity
和friction
的值来获得不同的效果例如:
例如:
相关问题 更多 >
编程相关推荐