我目前正在开发一个pyplay,试图使我的角色动画,这样当玩家移动他时,程序将在四个精灵图像次表面中循环。我已经为此设置了一个类:
import pygame
from pygame.locaks import *
class Prota:
def __init__(self, sheet):
self.sheet = pygame.image.load(sheet).convert_alpha()
self.image_rect = self.sheet.get_rect()
self.image_rect_h = (self.image_rect.height) #num of rows
self.image_rect_w = (self.image_rect.width/16) #num of columns
self.image_reel = self.fetch()
self.image_cue = 0 #index: 0 - 3 (Right), 4 - 7 (Left), 8 - 11 (Front), 12 - 15 (Back)
self.clock = pygame.time.Clock()
def draw(self, screen):
self.clock.tick(60)
screen.blit(self.image_reel[self.image_cue], (400, 300))
def fetch(self):
sprites = []
for x in range(0, 15):
self.sheet.set_clip(pygame.Rect(self.image_rect_h*x, 0, self.image_rect_w, self.image_rect_h))
sprite = self.sheet.subsurface(self.sheet.get_clip())
sprites.append(sprite)
return sprites
当我使用虚拟精灵表(只是一个简单的50 x 50的改变颜色的正方形精灵)时,它工作得非常好,但是当我尝试实现我的(部分完成的)实际角色表时,我回来了
ValueError: subsurface rectangle outside surface area
我不确定是工作表的大小(虚拟工作表是832 x 52px,字符工作表是1008 x 79px),还是什么,我似乎找不到任何解决这个问题的文章。(最接近我可以找到在一个快速搜索是如何旋转图像pyplay
有什么想法吗?
错误是使用了self。image_rect_h*x
作为pygame的第一个参数(x-coord)。矩形。将其更改为self。image_rect_w*x
修复了它。
self.sheet.set_clip(pygame.Rect(self.image_rect_w*x, 0, self.image_rect_w, self.image_rect_h))
我不确定为什么会发生错误,因为pygame。表面设置剪辑
和。get_clip
应限制在表面区域。您应该发布完整的回溯(错误消息)。
事实上,我认为如果图像加载和剪切出现问题,最好让程序崩溃,这样更容易找到错误,否则无论如何都会得到错误的精灵。所以你可以使用pygame。表面地下
而不是设置剪辑
和获取剪辑
。
rect = (self.image_rect_w*x, 0, self.image_rect_w, self.image_rect_h)
sprite = self.sheet.subsurface(rect)
我正在as3中编写一个冲突检测系统。它的目的很简单:我有一些移动的矩形和一些静态的矩形。当一个移动的矩形与另一个矩形碰撞时,我想将源(碰撞)矩形移动到碰撞区域之外,但仍然尽可能靠近(基于源的轨迹)。 在每一帧中,我更新移动矩形的位置,并检查所有矩形之间的接触。 下图代表以下内容: A:方框#1正以45度角向静态矩形(#2)移动。 b:经过几次“刻度”后,我们看到矩形#1移动到矩形#2(静态)的空间
问题内容: 目前,我有工作代码,可以循环通过一个Spritesheet,将每个单元格/图像(总共9个)作为子表面添加到列表中。随着游戏的更新,我将Player图像设置为代码在其中索引的当前单元格。同时,我还有一个固定的矩形,用作精灵的“ hitbox” /碰撞矩形。 但是,将次表面设置为新图像,我发现精灵从碰撞矩形的左上角缩放。由于子图形比碰撞矩形大得多,因此将碰撞矩形放置在远离实际char模型/
我有一个点[xmin,ymin,xmax,ymax]的列表,每个点都按黑点显示 请注意,有许多这样的矩形,如图像所示。红色的应检测删除,绿色的应保留。 输入是 n 矩形 输出是覆盖区域和它覆盖的矩形 id 。最好给出一些算法和解释。
问题内容: 我一直在使用skimage的SLIC实现来分割超像素中的图像。我想使用GLCM从这些超像素中提取其他功能,以解决分类问题。这些超像素不是矩形的。在MATLAB中,您可以将像素设置为NaN,算法将忽略它们(link)。我可以使用它在超像素周围制作边框,然后将未使用的像素设置为NaN。 skimage中的greycomatrix函数与MATLAB实现并不完全相同。将像素设置为NaN时,该函
如何用image Magick替换图像矩形区域内的颜色? 下面是输入和输出图像的示例,我使用Adobe Photoshop生成这些图像,方法是选择一个矩形区域(包含网格区域),并执行命令:并选择要替换为灰色的黑色。 注意,绿色跟踪可以具有任何形状和颜色(黑色除外),绿色像素覆盖了黑色像素,因此是不可能的。 我知道如何替换整个图像中的颜色,像这样: 但是上面用灰色替换了所有的黑色,甚至是黑色文本,比
请帮助我如何找到两个矩形区域之间的交点。 例如:我在virtual earth MapsV6.3中搜索可视区域的结果 地图返回给我左上和右下的点作为纬度和经度。然后我平移区域移动到不同的位置。我有我的旧坐标保存现在我想找到共同的区域之间的旧的可视区域和新的可视区域。我已经有左上和右下的点了。