python
ライブラリ「Pygame
」(v1.9.2)でゲームを作ろうとしていて、プレイヤーのキャラクターを作っています。このキャラクターはmouse_pos
のポイントに「弾丸」や「呪文」を「撃つ」と言われています。私が助けが必要なのは、スピードを上げようとすると「弾丸」に一定の速度が1 self.speed = 1
に割り当てられていることですself.posがmouse_posよりも高いか低いので弾丸がmouse_posに達したときにちらつき効果を引き起こします。ポイントAからポイントBへのパイジェの弾丸の動き
私はこの弾丸をすばやく進めるにはどうすればいいですか?&は弾丸のように滑らかで、mouse_posが設定されている正確なポイントにもどりますか? self.speed = 2
http://4.1m.yt/d_TmNNq.gif
関連するコードとself.speed = 1
例と
例更新内部にある()関数
スプライト.py(スペル/ブレットクラス)
class Spell(pygame.sprite.Sprite):
def __init__(self,game,x,y,spelltype,mouse_pos):
pygame.sprite.Sprite.__init__(self)
self.game = game
self.width = TILESIZE
self.height = TILESIZE
self.type = spelltype
self.effects = [
'effect_'+self.type+'_00',
'effect_'+self.type+'_01',
'effect_'+self.type+'_02'
]
self.image = pygame.image.load(path.join(IMG_DIR,"attack/attack_"+self.type+".png")).convert_alpha()
self.image = pygame.transform.scale(self.image,(self.width,self.height))
self.rect = self.image.get_rect()
self.rect.x = x+self.width
self.rect.y = y+self.height
self.speed = 1
self.mouse_pos = mouse_pos
self.idx = 0
def update(self):
if not self.rect.collidepoint(self.mouse_pos):
if self.mouse_pos[0] < self.rect.x:
self.rect.x -= self.speed
elif self.mouse_pos[0] > self.rect.x:
self.rect.x += self.speed
if self.mouse_pos[1] < self.rect.y:
self.rect.y -= self.speed
elif self.mouse_pos[1] > self.rect.y:
self.rect.y += self.speed
else:
self.image = pygame.image.load(path.join(IMG_DIR,"effects/"+self.effects[self.idx]+".png"))
self.idx += 1
if self.idx >= len(self.effects):
self.kill()
弾丸を特定の方向に発射するには、三角法またはベクトルを使用する必要があります。ここでは、ベクトルとどのように動作するかを示す答えがあります:http://stackoverflow.com/a/42281315/6220679 – skrx
あなたの弾は非常に速くてターゲットを通過する場合は、弾丸の間の線現在の点とその最後の点がターゲットと交差します。 – Lanting
各アップデートで距離がODDかEVENかどうかを確認する必要がありますか? –