Articles of 树

如何在cocos2dx中用父节点来旋转子节点?

考虑下面的代码… cocos2d::Node* parent = cocos2d::Node::create(); cocos2d::Node* child = cocos2d::Node::create(); parent->addChild(child); parent->rotate(-90.0f); // But its not affecting the child position 当我通过角度旋转父节点时,它不会影响子节点的位置。 我怎样才能正确的? 请帮忙。 谢谢。

八叉树和四叉树混合的缺点?

我已经实现了一个八叉树来划分包含多个对象的三维空间。 我注意到在某些八叉树节点中,我可以在一些轴上使用更多的细化,但将节点分成8个孩子有点矫枉过正。 想象一个充满建筑物的街区。 在某种程度上,在我的情况下进一步细分高度是没有意义的,但是我需要在另外两个轴上更精确。 将八叉树细胞细分为仅仅四个孩子是否有任何主要的缺点,即仅细分两个轴? 这将创建一个八叉树和四叉树之间的混合。 我还没有find任何相关的文档,这对我来说似乎很陌生,因为它看起来像一个简单的方法来解决一个常见的问题。

二维空间中的对象树 – 相对于父对象的孩子

题 我们如何跟踪子对象相对于父对象的位置? 上下文 我有一个简单的结构,跟踪太空中的一个点,还有零个或更多的孩子: function Point(x, y){ this.x = x; this.y = y; this.children = []; } 鉴于关系: const a = new Point(100, 100); const b = new Point(10, 10); a.children.push(b); 当这些渲染,我想点b渲染在世界的位置[110, 110] 。 移动a ,只有a : ax += 10; 两点都移动,两者之间的距离必须保持不变。 移动b后只有b : bx += 10; 只有b移动,两点之间的距离现在必须不同。 换句话说,一个孩子的(x, y)与其父母的偏移相同。

重叠检测,最近的邻居

我试图得到类似于最近邻居问题的东西,除了我只想要半径重叠的邻居,以及所有这些。 在解释我认为我需要的之前,我会解释我的问题。 我有实体由体素制成,我想要在所有体素之间完全碰撞。 我只会在“this”实体的最大半径范围内对其他实体加上其速度幅度( 包括其他实体的半径)进行碰撞检查。 这本身就是另外一个问题,但我可以处理。 我现在需要的是填充这个“需要检查的碰撞列表”的方法。 取一组具有任意大小/半径的实体,将线/圆/球移出其半径; 给予其中一个领域,得到所有其他领域的重叠列表。 如果立方体的速度快得多,立方体也可以代替球体。 当然,我可以迭代所有的实体,但这将是n ^ 2次,我想有成千上万的实体。 我也许可以用计算着色器来强制它,但我想避免这种情况。 Sofar我一直在想有一个K树存储所有的实体位置,然后让每个实体在节点上做一个足迹作为一个步骤,在下一步,检查属于这个也有另一个足迹的节点实体。 那么我怎样才能以一种可以设置的方式制作四叉树,并且以一种不可怕的方式获取脚印呢? 还是有一个完全不同的更好的方法? 编辑: 发现这篇文章,但它相当于我的头

在搅拌器中变形

当我把树皮纹理(保存为.jpg)纹理看起来拉长和奇怪时,我用曲线修改器中的“使用UV进行映射”来构造弯曲的附加树,仍然看起来很紧张。 我有搅拌机2.75。 提前致谢。 🙂

树编辑器中的统一错误

我一直在用Unity编辑树编辑树,为了一个现实的效果,我需要让所有的树叶面向一个大方向,问题是大多数人不面向那个方向,倒过来或侧身。 所以你进一步了解,我会添加一些图像。 我希望所有的叶子都朝着这个方向。 (图片1)在这里,你可以看到一些叶子是颠倒的或侧向的,我想让所有的叶子都以相同的方式面对。 (图片2)在这里,你可以看到叶面朝上,这是我想所有的叶子面对的方式。 任何帮助表示赞赏,谢谢。

QuadTree检查与不同级别的节点的碰撞

我正在制作2D平台游戏的QuadTree。 研究它,我设法做一个很好的一个,其中每个节点存储它的4个子节点,并且每个节点有一个MAX_OBJECTS,MAX_LEVELS代表我的树有多less级别,0是根。 所以,我得到我的对象,我试图把它存储到最深的节点。 如果我不能,那么我会将它存储在父节点中。 然后当我检查碰撞,我会看到哪些节点可能与我的对象碰撞,获得这些节点中的对象,并将其添加到我的碰撞检查列表。 我的问题是这个检查碰撞。 我很困惑。 例如,我有一个级别为1节点的ObjectA,它将与其节点内的对象发生冲突。 我有另一个ObjectB在0级(根节点),它重叠ObjectA的节点,所以有一个可能的碰撞。 从上面的段落可以看出,父节点中的对象有机会与SubNode中的对象发生冲突。 所以,当我检查可能的碰撞,我检查我的对象的节点的父节点+子节点…我真的不知道如何select要检查的节点。 会不会有不同级别的节点? 等级1的对象可以与等级0,等级2,等级5等等进行冲突检查(或者这是错误的)。 很难了解检查特定节点的标准是什么…简而言之,一棵树有许多不同的级别… 就我所知,在Level5可能有一个ObjectA(x,y),在Level5可能有ObjectB(x,y)。 完全相同的坐标,但不同的节点级别。 如果我要在Level 0检查ObjectC(x,y)的碰​​撞,我将ObjectA放在List中会导致相同的节点,但ObjectB在不同的Level中却是相同的。 所以只是从上面的理论/解释或者任何你可以称之为的。 我可以得出结论:我检查碰撞的节点应该包括根节点,直到我的对象所在的节点+我的对象所在的节点的子节点。 你可能会问,为什么不把它存储在同一级别,以及我从别人那里听说,如果我把那些重叠的东西存储在父节点上会更好,如果我限制每个节点的对象数量,那将是好事。 所以如果水平满了,我需要发送它。 我很抱歉,如果这可能是一个简单的问题,这只是我已经思考了6天,但我仍然无法弄清楚。 请帮忙! 这是我最后的希望!

如何在处理后续节点时确保行为树中的条件?

示例树( 来源 ): 据我所知,一个音序器迭代孩子,直到一个失败或全部成功。 如果一个孩子返回“正在跑步”,则顺序器将在下一个打勾处开始处理该孩子。 我们说“我有食物吗?” 需要比一个时间更长的时间,因为人工智能必须走到冰箱。 当我“饿了”成功了,它不会再被处理了。 现在,当走到冰箱时,饥饿会神奇地消失。 即使我不饿了,如何防止树处理其他节点? 是否每个节点都要再检查一次? 这似乎不符合行为树的想法。 如何在处理下面的节点时实现一个必须保持为真的条件?

二维空间三维网格划分(寻找最近点)

我正在编写一个二叉树空间分割(BSP)树,目的是优化在另一个点上查找3D三角形网格表面上的最近点。 我目前正在使用类似于这里描述的方法来构建树,然后使用重心坐标来定位三角形表面上的最近点。 如何解决三角形被分割平面分割(即三角形中的三个点不在分割平面的同一侧)的问题。 上一个链接中提出的一个解决scheme是将这些冲突的三角形附加到根节点,但我不确定这将如何影响树遍历。 当遍历树并最终到达一个包含一组最接近查询点的三角形的叶节点时,您将需要检查每个查看哪个最接近的三角形,还需要检查父代中的所有三角形节点? 我想到的另一种方法是在分裂的节点的正面和负面儿童中包括相互冲突的三角形(积极的孩子在飞机上方,在下面的负面)。 这样,它们仍然可以被排除在分裂平面的进一步迭代中,但似乎有点多余。 最后的替代方法是使用顶点来构建我的树,并find最近的顶点到查询点引用附近的三角形。 这将使得构建树变得更简单,但是因为最近的点不一定是最近三角形的一部分,所以您需要检索多个最近点并针对多个最近三角形进行查询以确保您具有最接近的正确点。 这些方法中的每一个都似乎有点不雅,所以我希望有一个更简单的解决scheme。

如何修剪一个像魔术一样的游戏的AI游戏树?

我的AI有一个游戏树结构,为了获得一些深度,我需要修剪。 这是一个完美信息的单人游戏。 一个很好的比喻就是魔法单人游戏,玩家不会玩牌,但是自动会在每回合造成一些伤害。 由于我没有对手,我不需要minimax(我可以做一个纯粹的MAX)或a / b修剪。 如果需要,我可以在节点上使用评估函数。 我正试图提前计划,并find很好的组合卡玩。 我不想硬编码这些组合。 我发现很难修剪任何分支,因为即使是一个坏分数节点的分支也可能会导致一个很好的组合,将彻底改变游戏(你知道,就像:玩5张低劣的卡片,几乎死了,但是第6次卡会给你一个胜利)。 任何想法如何在这样的游戏树修剪?