【发布时间】:2018-08-25 18:11:43
【问题描述】:
我尝试了来自here 的 cocos2d TileMap 示例,在这个为给定玩家位置返回的 tilecord 中是错误的。
这里是代码
Point HelloWorld::tileCoordForPosition(Point position)
{
int x = position.x / mTileMap->getTileSize().width;
int y = ((mTileMap->getMapSize().height * mTileMap->getTileSize().height) - position.y) / mTileMap->getTileSize().height;
return Point(x, y);
}
返回的 tileCord 也是错误的。所以碰撞不起作用。我从 Ray Wenderlich 网站的示例中使用它
这里是完整的示例代码https://app.box.com/s/whunv70tstwxbgzxdvxfeu080y6gwucb
如果有人有时间,请检查它,并请帮助我找到错误。
【问题讨论】:
-
我无法为您提供真正的帮助,但我首先想到的是锚点位置的差异。像 cocos2D 这样的游戏引擎通常使用坐标系,它的 Y 位置从
left-bottom开始,而不是左上角。 -
@ToughGuy 感谢您的回复,我理解您的担心,TileMap 坐标系的y 是从左上角开始,而cocos2d 是从左下角开始。这就是为什么在上述函数中翻转 Y 位置的原因。同样的逻辑在 cocos2d-Obj.C 项目中对我来说很完美……现在在 Cocos2d-x 中出现了其他问题。
-
尝试记录两个碰撞对象的 x y,(也在 cocos2d-iphone 中)它肯定会给你提示。
-
@ToughGuy 感谢您的精彩提示...在 cocos2dx 中,出于某种原因,生成点恰好返回 cocos2d-ObjC 的一半。如果我在 tileCoordForPosition 函数中乘以输入触摸点,那么它会返回正确的坐标。感谢您的精彩提示
-
所以我猜你回答了你自己的问题:) 我想知道赏金会发生什么? :D
标签: iphone xcode cocos2d-x cocos2d-x-3.17 tmxtiledmap