신참 여기에 초점이 반대 방향으로 계층 이동의 볼 부분, 나는 2 차원의 주위에 스크롤 ScrollingManager의 set_focus(x, y)
방법을 사용하고 있습니다적인 Cocos2D 0.6.0 파이썬에서 :)적인 Cocos2D/파이썬 :
을 게임을 만들려고 노력 타일 맵. 관련된 레이어는 올바르게 스크롤되는 것처럼 보이지만 반대 레이어로 이동하는 창 (512x512)과 동일한 크기 인 일부 레이어가 내 레이어를 부분적으로 가리고있는 것 같습니다. 이걸 어떻게 없앨 수 있습니까?
나는 최고의 이런 식으로 시각화 할 수 있습니다 : 참고로
Screenshot 1: initial focus at startup, all layers visible
Screenshot 2: layers seem cropped after scrolling down
, 내가 파이썬에 대한적인 Cocos2D 0.6.0 ScrollingManager 클래스를 사용하고 있습니다.
[편집] 테스트 할 수있는 독립형 스크립트를 만들었습니다.
import pyglet
from pyglet.window import key, mouse
import cocos
from cocos import tiles, actions, layer
import random
def main():
global mouse, scroller
global fx, fy, winx, winy, offsetx, offsety
# map size (cells)
hsize = 128
vsize = 128
# window size (pixels)
winx = 960
winy = 640
# coordinates of screen focus
fx = 0
fy = 0
from cocos.director import director
director.init(width=winx, height=winy, do_not_scale=True, resizable=True)
offsetx = hsize * 16 - winx
offsety = vsize * 16 - winy
##################################
### creation of randomized map ###
##################################
tileset = {}
# a 16x16 pixel tile (blue, represents water)
tileset['water'] = pyglet.image.ImageGrid(pyglet.image.load('resources/water.png'), 4, 4)
# a 16x16 pixel tile (green, represents land)
tileset['land'] = pyglet.image.ImageGrid(pyglet.image.load('resources/land.png'), 4, 4)
# empty 2D array holding RectCells
cellMatrix = [ [None]*hsize for i in range(vsize) ]
# filling of array
for v in range(vsize):
for h in range(hsize):
if random.random() < 0.5:
image = tileset['water'][1]
else:
image = tileset['land'][1]
tile = cocos.tiles.Tile('test', {}, image, None)
cellMatrix[v][h] = cocos.tiles.RectCell(h*16, v*16, 1, 1, None, tile)
##################################
### end of creating random map ###
##################################
# creating rectMapLayer from cell array
rectMapLayer = cocos.tiles.RectMapLayer('test', 16, 16, cellMatrix, None, {})
scroller = cocos.layer.ScrollingManager()
scroller.add(rectMapLayer, 0, 'test')
main_scene = cocos.scene.Scene(scroller)
def on_mouse_motion(x, y, dx, dy):
global fx, fy, offsetx, offsety, winx, winy
if x > winx - 16:
fx = min(offsetx, fx + 16)
if x < 16:
fx = max(0, fx - 16)
if y > winy - 16:
fy = min(offsety, fy + 16)
if y < 16:
fy = max(0, fy - 16)
scroller.set_focus(fx + winx/2, fy + winy/2, force=True)
director.window.push_handlers(on_mouse_motion)
director.run(main_scene)
# run game
if __name__ == '__main__':
main()
답장을 보내 주셔서 감사합니다.