これは、このページのプロジェクトに関する別の質問です 。
バレルを回転させましたが、マウスのクリック位置に向かって弾丸を移動させようとしました。だからここに私がそれについてやったことです。
定数.py
pygame.init()
scr = pygame.display.list_modes()
resolution = (scr[0][0],scr[0][1])
angle = 0
barell = pygame.image.load("barell.png")
tux = pygame.image.load("tux.png")
tux2 = pygame.transform.scale(tux,(100,100))
cropped = pygame.Surface((10,30))
mouse_pos = rx,ry = 0,0
bullet = pygame.image.load("bullet.png")
fast_bullet.py
import pygame
import groups,math,constants
class Missile(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = constants.bullet
self.rect = self.image.get_rect()
self.rect.x = 750
self.rect.y = 550
self.speed = 1
self.angle = 0
def add_to_group(self):
groups.all_sprite_group.add(self)
groups.bullet_group.add(self)
def move(self):
self.rect.x += math.sin(self.angle) * self.speed
self.rect.y -= math.cos(self.angle) * self.speed
pygame.transform.rotate(constants.bullet,self.angle)
event.py
import pygame,sys,math,constants
from pygame.locals import *
from faster_bullet import *
import screen
class Event(object):
def __init__(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == MOUSEBUTTONDOWN and event.button == 1:
constants.mouse_pos = event.pos
b = Missile()
b.add_to_group()
dx = b.rect.x - constants.mouse_pos[0]
dy = b.rect.y - constants.mouse_pos[1]
b.angle = math.degrees(math.atan2(dx,dy))
print b.angle
elif event.type == KEYDOWN and event.key == K_c:
pygame.image.save(screen.screen,"screenshot.png")
しかし、画面のどこかをクリックすると、これら 3 つの位置のいずれかに移動し、画面の端で停止します。
問題を解決するためにこれらの指示に従ってみましたが、うまくいきませんでした。
pygameで敵をプレイヤーに追従させる方法は? - 一番下の答え
しかし、私は小学校を卒業したばかりなので、sin、cosinが何を意味するのかわからないので、私の数学の知識が本当の問題だと思います. 私は動きのためにこのチュートリアルに従ったhttp://www.petercollingridge.co.uk/pygame-physics-simulation/movement