私は自分のPygameのスプライトをディスプレイ上に移動したいと思っています。その与えられたルートと私はベクトルでそれらを移動したい。だから私は私のルートの位置を得たので、私は大きさと見出しを得た。数式と私がどのようにスピリットの方法を変更したいのかを見ることができます(「if」を使って)。私はベクトルをタプルに入れて、それは正しくないと思う。エラーが発生するベクトルでスプライトを移動する
TypeError: can't multiply sequence by non-int of type 'float' line 51
私はタプルをmutliplyする方法だと思います。しかし、私はあなたがこの背後に私のアイデアを得る願っていますし、あなたは私の
clock = pygame.time.Clock()
speed = 25.
position = (30.0,50.0)
magnitude = [509, 141, 128, 409, 293, 330, 251, 532]
heading = [(0.7,0.73),(0.71,0.71),(0.78,0.63),(-0.52,0.65),(0.97,0.24),(0.58,-0.82),(-0.88,-0.48),(0.08,-0.99)]
while True:
for event in pygame.event.get():
if event.type == QUIT:
exit()
screen.blit(background, (0.0,0.0))
screen.blit(x1, position)
screen.blit(x2, (300,30))
screen.blit(x3, (500,30))
screen.blit(x4,(800,30))
time_passed = clock.tick()
time_passed_seconds = time_passed/1000.0
route = time_passed_seconds * speed
position += heading[0] * route
if route >= magnitude[0]:
route = 0
route1 = time_passed_seconds * speed
position += heading[1] * route1
if route1 >= magnitude[1]:
route2 = time_passed_seconds * speed
position += heading[2] *route2
if route2 >= magnitude[2]:
route3 = time_passed_seconds * speed
position += heading[3] * route3
if route3 >= magnitude[3]:
route4 = time_passed_seconds * speed
position += heading[4] * route4
ありがとうございます。出来た。今私は動きの間に見出しを変えたいと思う。したがって、if節は、route == magnitude [0]ならば:/ n position + = heading [1] * speed – Skorab
あなたのサンプルコードでif節を変更しなくても動作するはずですので、私の答えにそれを含めてください。あなたはそれを試しましたか?何かエラーが発生しましたか? – Isa
いいえ、方向は変わりません。おそらく、その大きさが正確に計算されたルートではないからでしょうか? – Skorab