gpt4 book ai didi

ios - 如何在 cocos2d 中将一个小的 CCTMXTileMap 居中?

转载 作者:可可西里 更新时间:2023-11-01 05:00:22 24 4
gpt4 key购买 nike

我正在使用 cocos2d 制作基于图 block 的 2d RPG。我正在为我的 map 使用 CCTMXTileMaps。我的玩家以屏幕为中心, map 围绕它移动(除非玩家走向 map 边缘,他们离开中心并实际移动)。该系统在大 map 上运行良好。然而,在小 map 中, map 固定在屏幕的右上角。虽然该机制仍然有效,但让这些小 map 自动居中会很好。

如何使小于屏幕尺寸的 map 居中?我希望 map 在“红框”中居中。 (红框只是为了说明目的,它实际上并不存在于代码中。)

enter image description here

编辑:

所以我在理论上想出了如何做到这一点,但我在理解坐标系时遇到了麻烦。我正在使用以下代码使 map 居中,但它没有按预期运行。 map 从屏幕上加载。

    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;

}

我在这里做错了什么?

最佳答案

好的,解决方案非常简单,尽管我遗漏了一些东西。在父级中居中 map 的最基本代码是这样的:

    //
// Get the center of the
// screen/map layer (which are the same)
//

CGPoint centerOfSelf = CGPointMake(self.contentSizeInPixels.width/2, self.contentSizeInPixels.height/2);

//
// Position the map in the center
//

tileMap.position = CGPointMake(centerOfSelf.x - (tileMap.contentSizeInPixels.width/2), centerOfSelf.y - (tileMap.contentSizeInPixels.height/2));

如果您为每个场景加载一张 map ,上述代码将起作用。但是,如果您(像我一样)有一个加载 map 和相关数据的“世界”场景,那么您需要做一些不同的事情。您会看到,加载比屏幕大的 map 会导致图层“拉伸(stretch)”并调整自身大小以适应更大的 map 。这样做时,上面的代码将在“拉伸(stretch)” map 场景中居中并随后加载 map 。所以,为了解决这个问题,我首先必须调整“世界场景”层的大小以匹配屏幕的大小。为此,我使用以下代码:

//
// Reset the size of the bounding
// area so that we can properly
// center maps that are smaller than
// the bounding area of the screen.
//

CGSize screenSize = [[CCDirector sharedDirector] winSize];
self.contentSizeInPixels = screenSize;

//move camera
self.position = CGPointZero;

请注意,我还将“相机”移回 0,0 位置,以防我们跟随主角离开。

关于ios - 如何在 cocos2d 中将一个小的 CCTMXTileMap 居中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6686020/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com