- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我目前正在尝试结合 cocos2d-x 中的内置 PhysicsBody 和 TileMap 类来为我的基于物理的侧滑游戏创建关卡(墙)。我有大小为 80*24 的图 block ,每个图 block 的大小为 30*30 像素 - 我需要为每个图 block 分配一个静态盒形物理体。
for (int x=0; x < 80; x++) //width of map
{
for (int y = 0; y < 24; y++) //height of map
{
auto spriteTile = wallLayer->getTileAt(Vec2(x,y));
if (spriteTile != NULL)
{
PhysicsBody* tilePhysics = PhysicsBody::createBox(Size(30.0f, 30.0f), PhysicsMaterial(1.0f, 1.0f, 0.0f));
tilePhysics->setDynamic(false); //static is good enough for walls
spriteTile->setPhysicsBody(tilePhysics);
}
}
}
上面的代码有效,但速度很慢,性能从 60 fps 下降到 20 fps 左右。是否有一种不那么暴力的方法,可以更有效地创建物理实体?注意:大部分 map 都是空白的,所以我不认为 body /瓷砖的数量是主要问题。
任何见解都会有所帮助,谢谢
最佳答案
首先,检查物理调试绘制是否打开,因为它可以显着降低 FPS。另外,请确保您是在设备上而不是在模拟器上测量 FPS,因为它在那里不可靠。
如果这没有帮助,那么您将不得不采用某种等高线追踪方法来避免为您的瓦片 map 中的每个瓦片创建静态主体。最好为您从瓦片 map 中描出的每个轮廓创建 1 个静态主体。这样,您最终会拥有更少的物理体,并且您的性能不会受到太大影响。
一种方法是所谓的 marching squares算法。另一个是 Moore neighborhood算法。
关于c++ - 如何为 TileMap 上的每个图 block 创建一个 PhysicsBody? (cocos2d-x),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35737098/
我在 cocos2d-x 中使用等距 tilemap,我面临的一个问题与深度管理有关。玩家 Sprite 没有正确地隐藏在放置在不同瓷砖 map 层上的树木和房屋后面。我已申请 cc_vertexz
我正在尝试制作一个 TileMap,但是当我去渲染tileMap 并迭代 map 中的所有整数时,我得到一个ArrayIndexOutOfBoundsException。 这是渲染方法: public
我正在开发一个小应用程序,我在其中将 tilemap ( JSTilemap ) 加载到 sprite kit 中。 这一切都很好,除了瓦片 map 在纵向上看起来正常而且很好,但是当我翻转到横向时它
我在做一些本应非常简单的事情时遇到了一些麻烦。我无法让瓷砖的地板显示在背景图片上方。然而,我可以让我的所有其他游戏对象从我的控制面板显示到我的 HUD,甚至是在同一个瓷砖 map 中设置的硬币和怪物。
如何在基于 2D 图 block 的游戏中映射负 map 坐标?前任。 (-180,100)或 (10, -8) 我需要用 O(1) 来访问它们。我不想创建一个巨大的二维 vector 并将 (500
我正在创建一个 2d 横向卷轴游戏并且有一个关于碰撞的问题。我一直在阅读各种文章,其中一些文章说您应该有一个碰撞层,它与平铺层的样式完全相同,但只是存储位。我理解这个逻辑,但如果我的图 block 实
我用周围瓷砖的所有可能组合制作了一个自定义组。 我将它与我的 TileMap 上启用的自动映射模式一起使用,结果如下: 如您所见,有几个错误: 我以编程方式和在编辑器中都尝试过。行为是相同的。 我的想
我尝试了很多不同的解决方案,但我不太确定这是否是问题所在使用我的方法或者如果代码不起作用 例如, 我希望能够在我最初设置的值中设置下面数组中的值,这是我的尝试 function makepointfr
我找不到解决问题的方法。我平铺了一个图像并将其保存到一个位图数组中。现在我想把它填成一个 7 x 7 的网格。我需要这样做,因为我想访问并可能更改单个磁贴。我尝试了 Gridview,但似乎我只能设置
下面的代码应该用空格替换 tilemap 索引,但是没有任何反应。 瓷砖 map : var tilemap = [ "wwwwwwwwwwwwwwww", "wmmmmmmmmm
我希望用户在那里选择 map 大小,所以我不知道运行时 map 的大小。我一直在寻找如何实现这一点,但收效甚微。最接近正常工作的是 vector 变体,但在它运行时仍然无法正常工作。 我想要一个 3
我有两个瓷砖 map 。可以使用 WASD 移动一个(瓦片会立即移动到新位置),我想检测此瓦片 map 的瓦片何时与另一个瓦片 map 的瓦片发生碰撞。 两者都有 tilemapcollider2d
我使用 SDL 编写了一个显示相当大的瓷砖 map (大约 240*240 瓷砖)的模拟。由于我对 SDL 库还很陌生,所以我真的无法判断渲染超过 50,000 个图 block 时相当慢的性能是否真
我有兴趣尝试为 2D 游戏创建逼真的流体(水)。这个游戏类似于泰拉瑞亚。我听说过如何在场景中拍打一堆碰撞粒子并在其上进行渲染,瞧,逼真的水。 Terraria 使用基于瓷砖的水,我不喜欢它……我想要更
我正在计划使用 SpriteKit 和 Swift 为 iOS 开发一款平台游戏。我研究了如何处理玩家 Sprite 的碰撞并偶然发现了这篇文章。 http://www.learn-cocos2d.c
我正在使用 SDL2 编写一个在每一帧都显示瓦片 map 的游戏,但性能太慢了。我写了一个小程序来隔离问题。假设“temp.bmp”是一张 16x16 的图像。 #include #include
我正在寻找一种方法来创建一种新型的六边形规则图 block 来完成一些相当简单和具体的事情。我想创建一个六边形规则图 block ,该图 block 能够根据与它相邻的其他类型的六角形图 block
我正在尝试在运行时将我的一个可编写脚本的图块添加到我的 Unity Tilemap 中。我可以在编辑器中绘制磁贴,一切看起来都很好,但我想在运行时添加它。 我尝试实例化 ScriptableObjec
我使用 Tiled 软件创建了以下 map ,我想让箱子发挥作用。实际上,我想知道玩家和宝箱何时重叠,但即使搜索了几个小时我也找不到解决方案。 我正在使用 ARCADE 物理。我尝试使用对象层但没有任
这是我现在用来尝试生成 tilemap 的代码: // --- Javascript --- window.onload = function (){ var can = document.get
我是一名优秀的程序员,十分优秀!