Как сделать так, чтобы игрок выглядел в глубине дерева? - PullRequest
0 голосов
/ 25 марта 2020

У меня есть это python с pygame, пожалуйста, не возражайте против комментария с игнором. все работает нормально, но мне нужно знать, как сделать игрока ниже дерева. Я уже пытался отобразить сначала символ, а затем дерево, но проблема в том, что когда я импортирую другой TILED TMX, у него есть черный фон, я не вижу настройки прозрачности. краткая информация: LoadFileMap - это место, где открывается tmx, а затем отображается карта:

makemaps = LoadFileMap.make_map(scroll[0],scroll[1])
display.blit(makemaps,(0,0))

Пример

мой Основной код:

import pygame, sys, os, random, math
clock = pygame.time.Clock()
from pygame.locals import *
import data.engine as e
import data.Mapload as Map
import data.Makemap as M

#Setting of the Windows
pygame.init()
pygame.display.set_caption("Pineapple")
WINDOWS_SIZE = (800, 608)
screen = pygame.display.set_mode(WINDOWS_SIZE,0,32)
display=pygame.Surface((304,256))
# pygame.mouse.set_visible(False)

#Loading the Animations & Particles
e.load_animations('data/images/Entities/')\

#Create random map
# LoadFileMap = Map.createfileworld("data/Map") Ignore
LoadFileMap = M.TilledMap('data/untitled.tmx')

tile_rects=[]

#Variables for the character
'''Player Status'''
for tile_object in LoadFileMap.tmxdata.objects:
    if tile_object.name == 'Player':
        player = e.entity(tile_object.x,tile_object.y,14,26,'player')
    if tile_object.name == 'Tree':
        tile_rects.append(pygame.Rect(tile_object.x,tile_object.y,tile_object.width,tile_object.height))

'''Camera'''
true_scroll = [player.x-304/2,player.y-256/2]
'''Character Movement'''
moving_right = False
moving_left = False
moving_up = False
moving_down =False

while True:
    display.fill((146,244,255))

    #Scroll Camera movement
    true_scroll[0] += ((player.get_center()[0]-304/2)-true_scroll[0])/10
    true_scroll[1] += ((player.get_center()[1]-256/2)-true_scroll[1])/10
    if true_scroll[0] < 0:
        true_scroll[0] = 0
    if true_scroll[0] > 496:
        true_scroll[0] = 496
    if true_scroll[1] > 544:
        true_scroll[1] = 544
    if true_scroll[1] < 0:
        true_scroll[1] = 0

    scroll = true_scroll.copy()
    scroll[0] = int(scroll[0])
    scroll[1] = int(scroll[1])



    #Rendering the map and rects
    makemaps = LoadFileMap.make_map(scroll[0],scroll[1])
    display.blit(makemaps,(0,0))


    #Character Movement
    player_movement = [0,0]
    if moving_up == True:
        player_movement[1] -= 2
    if moving_down == True:
        player_movement[1] += 2
    if moving_right == True:
        player_movement[0] += 2
    if moving_left == True:
        player_movement[0] -= 2

    collision_types= player.move(player_movement,tile_rects)

    player.display(display,scroll)



    #Buttons
    for event in pygame.event.get():
        if event.type==QUIT:
            pygame.quit()
            sys.exit()
        if event.type == KEYDOWN:
            if event.key == K_d:
                moving_right = True
            if event.key == K_a:
                moving_left = True
            if event.key == K_w:
                moving_up = True
            if event.key == K_s:
                moving_down =True

        if event.type == KEYUP:
            if event.key == K_d:
                moving_right = False
            if event.key == K_a:
                moving_left = False
            if event.key == K_w:
                moving_up = False
            if event.key == K_s:
                moving_down =False

    screen.blit(pygame.transform.scale(display,WINDOWS_SIZE),(0,0))
    pygame.display.update()
    clock.tick(60)

это файл, в котором он отображает карту (Makemaps.py)

import pygame, sys, os
from pygame.locals import *
import pytmx
class TilledMap:
    def __init__(self, filename):
        tm = pytmx.load_pygame(filename, pixelalpha=True)
        self.width= tm.width*tm.tilewidth
        self.height= tm.height*tm.tileheight
        self.tmxdata = tm

    def render(self,Surface,scrollx,scrolly):
        ti = self.tmxdata.get_tile_image_by_gid
        for layer in self.tmxdata.visible_layers:
            test = str(layer)
            if isinstance(layer,pytmx.TiledTileLayer):
                for x, y, gid, in layer:
                    tile = ti(gid)
                    if tile:
                        Surface.blit(tile,(x*self.tmxdata.tilewidth-scrollx,y*self.tmxdata.tileheight-scrolly))


    def make_map(self,scrollx,scrolly):
        temp_surface = pygame.Surface((self.width,self.height))
        self.render(temp_surface,scrollx,scrolly)
        return temp_surface

class obstacle:
    def __init__(game,x,y,w,h):
        self.group = game.Tree
        # pygame.sprite.Sprite.__init__(self.groups)
        self.game = game
        self.rect = pygame(x,y,w,h)
        self.x = x
        self.y = y
        self.rect.x=x
        self.rect.y=y
...