Tôi đang tạo một RPG 2d dựa trên gạch với cocos2d. Tôi đang sử dụng CCTMXTileMaps cho bản đồ của mình. Máy nghe nhạc của tôi là trung tâm trên màn hình và bản đồ di chuyển xung quanh nó (trừ khi người chơi đi về phía rìa của bản đồ, nơi họ đi bộ ra khỏi trung tâm và thực sự di chuyển). Hệ thống này hoạt động tốt trong các bản đồ lớn. Tuy nhiên, trong bản đồ nhỏ, bản đồ được neo ở phía trên bên phải của màn hình. Trong khi các cơ chế vẫn hoạt động, sẽ rất tốt nếu các bản đồ nhỏ này được căn giữa tự động.Làm thế nào tôi có thể căn giữa một CCTMXTileMap nhỏ trong cocos2d?
Làm cách nào để tạo bản đồ nhỏ hơn kích thước của màn hình? Tôi muốn bản đồ được căn giữa trong "hộp màu đỏ". (Hộp màu đỏ là chỉ vào đây để mục đích minh họa, nó không thực sự có trong mã.)
EDIT:
Vì vậy, tôi đã tìm ra cách để làm điều đó trong lý thuyết, nhưng tôi m gặp khó khăn khi hiểu hệ tọa độ. Tôi đang sử dụng mã sau để căn giữa bản đồ nhưng nó không hoạt động như mong đợi. Bản đồ tải ra khỏi màn hình.
if ((self.tileMap.contentSize.height < screenSize.height) && (self.tileMap.contentSize.width < screenSize.width)) {
CGSize winSize = [[CCDirector sharedDirector] winSize];
CGPoint centerOfView = ccp(winSize.width/2, winSize.height/2);
CGPoint centerOfMap = CGPointMake((self.tileMap.mapSize.width*self.tileMap.tileSize.width)/2, (self.tileMap.mapSize.height*self.tileMap.tileSize.height)/2);
self.tileMap.anchorPoint = centerOfMap;
self.tileMap.position = centerOfView;
}
Tôi đang làm gì sai ở đây?
xác định "vi phạm điều gì đó", nó có bị lỗi hoặc không hoạt động như bạn muốn không? –
@FraserGraham Đã chỉnh sửa. Nó chạy, nhưng không cư xử như tôi muốn. – Moshe