Python v2.7。 pygame的。 image.load和image.fill之间像素大小的差异

时间:2015-04-03 13:03:21

标签: python image python-2.7 pygame size

我尝试在Python v2.7上做一个简单的游戏(类似于danmaku射击游戏)

我对这部分有疑问

import os
from pygame import *

MOVE_SPEED = 3
WIDTH = 10
HEIGHT = 10
COLOR = "#F52525"

class Player(sprite.Sprite):
    def __init__(self, x, y):
        sprite.Sprite.__init__(self)
        self.xvel = 0
        self.yvel = 0
        self.startX = x
        self.startY = y
        self.image = Surface((WIDTH,HEIGHT))
        #self.image.fill(Color(COLOR))
        self.image = image.load("images/player.png")
        self.rect = Rect(x, y, WIDTH, HEIGHT)

" player.png"尺寸是40x60,但我需要在图像中心的实际尺寸10x10矩形,它将与游戏逻辑交互(可选择显示或不显示)。

3 个答案:

答案 0 :(得分:1)

所以我想你想缩小图像?   - 没有

修改

您需要偏移绘图和碰撞rect

--------   (x,y)          drawing
|\     | 
| \--  |     (x+15,y+25)  rect
|  --  |       (10,10)
|      | 
--------         (40,60)

所以基本上你想要在图像中发生碰撞。 https://www.pygame.org/docs/ref/sprite.html#pygame.sprite.collide_rect

def interact(something, player):
   # note both Sprites must have a rect attributes
   return pygame.sprite.collide_rect(something,player)

答案 1 :(得分:0)

您可能知道每个精灵都包含 image (在表面上绘制)和 rect对象(设置位置) image和碰撞检测区域。)

您可以在rect课程中创建 player对象...

self.collideRect =  pygame.rect.Rect((0, 0), (10, 10))

...并将其位置设置为

self.collideRect.center = self.rect.center

每当您更改player的位置时,您也必须调用此行,以便self.collideRect rect对象"随您的{移动" 屏幕上显示{1}}。

要测试点(例如鼠标坐标)是否在player内,请调用

self.collideRect

我希望这会有所帮助:)

答案 2 :(得分:0)

你需要在blit中使用rect参数:

screen.blit(image, dest, (x_crop, y_crop, width, height))

如果您想使用中心,则应定义图像功能blit(screen, dest)

screen.blit(self.image, dest, self.rect)