python – 解决pygame三角函数错误
发布时间:2020-12-20 13:39:05 所属栏目:Python 来源:网络整理
导读:我正在设计一个pygame游戏,以便子弹射向鼠标方向.我正在使用 用于在列表中定义项目符号的类,如下所示: class Bullet: def __init__(self,pos,speed,size): self.pos = pos self.speed = speed self.size = size def move(self): self.pos[0] = int(self.pos
我正在设计一个pygame游戏,以便子弹射向鼠标方向.我正在使用
用于在列表中定义项目符号的类,如下所示: class Bullet: def __init__(self,pos,speed,size): self.pos = pos self.speed = speed self.size = size def move(self): self.pos[0] = int(self.pos[0] + self.speed[0]) self.pos[1] = int(self.pos[1] + self.speed[1]) 我正在使用这个三角函数来获得我将要射击子弹的角度向量. def getUnitVector(x1,y1,x2,y2): delx = x2 - x1 dely = y2 - y1 m = math.sqrt(delx * delx + dely * dely) unit = (delx / m,dely / m) return unit level = [ 我不使用角度,因为我必须解决pygame舍入错误. mousex,mousey = pygame.mouse.get_pos() startx = 50 starty = 400 aim = getUnitVector(startx,starty,mousex,mouse 这就是我如何处理目标并让子弹从头开始拍摄x,y if pygame.mouse.get_pressed()[0]: if reload>10: bx = BULLETSPEED * aim[0] by = BULLETSPEED * aim[1] bullet = Bullet([startx,starty],[bx,by],10) bullets.append(bullet) reload=0 reload = reload + 1 我只是想让你知道.我正在完成一项学校作业,我将更深入地学习矢量和触发下一个单元,所以我现在不想花太多时间学习这些东西:L.此外,如果你知道任何活跃的python论坛可能更有帮助回答这个问题,请评论.我找不到任何东西. 我可能只是建立一个解决办法,只允许它在鼠标在20像素或以内的情况下拍摄,以便最小化错误. 解决方法
子弹类应具有矩形属性,以便子弹的行进方向穿过子弹的中心.
这样做首先需要阅读Pygame文档:Pygame.Rect Docs 将子弹矩形在行进方向上居中可以用这样的运动方法实现: def move(self): self.dir = self.get_direction(self.target) # get direction if self.dir: # if there is a direction to move self.trueX += (self.dir[0] * self.speed) # calculate speed from direction to move and speed constant self.trueY += (self.dir[1] * self.speed) self.rect.center = (round(self.trueX),round(self.trueY)) # apply values to bullet.rect.center 更多信息可以在这个有用的精灵运动示例中找到:Pygame Sprite Movement (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |