gpt4 book ai didi

ios - 移动平台? Cocos2d 和 Tiled

转载 作者:行者123 更新时间:2023-12-01 19:10:26 24 4
gpt4 key购买 nike

我正在尝试从平铺 map 编辑器 tmx 文件中制作一些移动瓷砖。
我在自己的图层中有移动的瓷砖,我只想让它们向上移动,然后当它们到达某个 y 时,再向下移动,等等。

我一直在寻找实现这一目标的明确方法,但我的努力没有成功。

我尝试使用一些方法here .

总的来说,我对 cocos2d 开发还是很陌生,所以我很感激对此的任何见解。非常感谢您的宝贵时间。如果您有任何疑问,请询问! :)
另外,如果有帮助,我要移动的瓷砖呈大 T 形。

最后更新:

(删除了更多不相关的代码,以便将来任何人都可以轻松找到我的解决方案(完整答案如下),您可以在上面的链接中找到我的层迭代方法)。

好的,所以我终于让它接近我想要的方式了。我认为这并不是最理想的方式,但这就是我所拥有的。

注意:为了让这对你有用,你必须在 Debug模式下运行你的应用程序,否则它会滞后/使玩家跌倒(至少对我来说是这样......)。

我有一个更新函数,它每帧调用某些函数。 (检查碰撞、移动平台等)。

该更新功能调用我的移动平台功能..

像这样:

[self movePlatforms:0.1];

这是我的 movePlatforms 功能..
-(void)movePlatforms: (ccTime) dt{
if(goingDown){
moveCount++;
}else{
moveCount--;
}
CGSize s = [movingTiles layerSize];
for( int x=0; x<s.width;x++) {
for( int y=0; y< s.height; y++ ) {
CCSprite *tile = [movingTiles tileAt:ccp(x,y)];
if(goingDown){
CGPoint newPosition = ccp(tile.position.x, tile.position.y - 1);
tile.position = newPosition;
if(moveCount >= 100){
goingDown = false;
}
}else{
CGPoint newPosition = ccp(tile.position.x, tile.position.y + 1);
tile.position = newPosition;
if(moveCount <= 0){
goingDown = true;
}
}
}
}
}

所以基本上,我创建了一个 int moveCount 和一个 BOOL goingDown 来跟踪我的 movePlatform 函数被调用了多少次。因此,在 100 次调用后,它会切换方向。

(这对我来说很好,如果是这种情况,你可能需要其他东西,比如碰撞检测器,使用这个)。
if (CGRectIntersectsRect([someSprite boundingBox], [someSprite boundingBox])) {
//Do something
}

希望这对将来的某人有用,我知道这对我来说很头疼,而且它甚至可能没有正确完成,或者有更好的方法可以做到这一点,但如果这对你有帮助,那就太棒了!

最佳答案

创建和删除瓷砖会影响你的表现。
而不是它,尝试移动瓷砖改变它们的位置:

CCSprite *tile = [movingTiles tileAt:ccp(92,platformY)];
[movingTiles removeTileAt:ccp(92,platformY)];
CGPoint newTilePosition = tile.position;
if (goingDown){
newTilePosition.y ++;
if(newTilePosition.y >= 20){
goingDown = false;
}
}else{
newTilePosition.y --;
if(newTilePosition.y <= 10){
goingDown = true;
}
}
tile.position = newTilePosition;

关于ios - 移动平台? Cocos2d 和 Tiled,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16926570/

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