我的Hitbox找不到真实的位置。我该如何解决?

ArdaYılmaz尚未活跃在Medium上。

对不起,英语不好:(

这是我的get hitbox函数:

def hitbox(self):
    return (self.x - 50,self.y - 50),(self.x + 50,self.y + 50)

我正在使用它来显示Hitbox:

pygame.draw.rect(screen,(122,122,0),(self.hitbox()[0],self.hitbox()[1]),3)

但是我的精灵在向右走时,命中框向右移的幅度更大,而当向下走时,命中框的下降幅度也更大。

我该如何解决?

金斯利

pygame的矩形有四个参数( x, y, width, height )您的hitbox()函数正在返回由定义的矩形( x1, y1, x2, y2 )

也许最好的方法是从函数中返回Rect这也将允许您使用出色的PyGame Rect碰撞处理功能

BOX_WIDTH  = 100
BOX_HEIGHT = 100

def hitbox(self):
     # Create the box at 0,0 with correct size
     box_rect = pygame.Rect( 0, 0, BOX_WIDTH, BOX_HEIGHT )
     # transpose it around the current position
     box_rect.center = ( self.x, self.y )
     return box_rect

然后绘制Rect:

pygame.draw.rect( screen, ( 122, 122, 0 ), self.hitbox(), 3 )

我认为将Rect作为类的成员存储是一个好主意。然后,要移动精灵,只需self.box_rect直接更新对象即可。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Debian:找不到deb命令。我该如何解决?

Unix - 我该如何解决:找不到命令

找不到与“<%”匹配的结束标记,我该如何解决?

我对“找不到与平台无关的库<prefix>”的原因的诊断是否正确,我该如何解决?

找不到shell脚本命令中的发现错误,我该如何解决?

debian 8:找不到deb命令。我该如何解决?

我该如何解决:MySQL 找不到 mysqli.so 或 xml.so

我该如何解决?找不到f1026文件'crt.dcu'

视频标签不起作用,它说找不到文件。我该如何解决?

我该如何解决?

我该如何解决

我该如何解决我的病情

为什么服务器找不到pihole.service.consul:NXDOMAIN,我该如何解决?

我该如何解决在android:onClick属性的父级或祖先上下文中找不到方法?

找不到插件项目:location_web。请更新settings.gradle。我该如何解决?

尝试安装Windows 7时出现“找不到操作系统”错误,我该如何解决?

我该如何解决这个错误?错误:找不到符号 Vholder.setData(mValues.get(position));

当我尝试ssh时如何解决'找不到匹配的mac找不到错误'

我已经在ubuntu 16.04中安装了powershell,但是在终端中键入powershell时却说找不到命令,我该如何解决呢?

当我通过 powershell 命令窗口或 python shell 本身运行 python--version 时找不到 Python 版本。我该如何解决?

什么是IndexOutOfBoundsException?我该如何解决?

我该如何解决Intent崩溃?

什么是NullPointerException,我该如何解决?

我该如何解决这个问题?

什么是NullReferenceException,我该如何解决?

我该如何解决细分错误?

我该如何解决DEPMOD警告

我该如何解决这个问题?

我该如何解决?Java脚本