CC3Node - 检测CC3Node子节点上的触摸

时间:2014-05-02 08:29:44

标签: ios objective-c cocos3d

您好我一直在探索cocos3D,我想知道如何检测主CC3Node的哪个子模式被触及。我使用以下代码:

rezNode = [CC3PODResourceNode nodeFromFile: @"BeachBall.pod"];
n = (CC3MeshNode*)[rezNode getNodeNamed: @"BeachBall"];
n.isOpaque = YES;
[self configureAndAddTemplate: n];

这将创建主节点,然后我将变量链接到子节点

self.childNode =(CC3Node*)[n getMeshNodeNamed: @"BeachBall-submesh1"];
self.childNode.isTouchEnabled=YES;
self.childNode.visible=YES;

现在我想检测特定节点上的触摸。我的触摸方法正在触发,但我猜测如何检查触摸是否在self.childNode上。

修改 在cocos3D编程指南中提到了

  

这两个步骤完成后,即可   nodeSelected:byTouchEvent:at:自定义的回调方法   每次触摸事件都会自动调用CC3World子类。   此回调包括触摸的CC3Node实例,类型   触摸的,以及触摸点的2D位置,在本地   CC3Layer的坐标。

第一步是集成触摸委托,第二步是将节点属性设置为visible和touchesEnabled。我已经实现了这两个步骤,但仍然是这个方法 nodeSelected:byTouchEvent:at:没有触发。

1 个答案:

答案 0 :(得分:0)

我自己得到了答案。如测试项目中所述,我们必须调用pickNodeFromTapAt: or pickNodeFromTouchEvent:at:来自动调用nodeSelected:byTouchEvent:at:。我正在做的是在 touchEvent touchBegan 中调用此pickNodeFromTouchEvent:at:,我在我的场景中覆盖了该方法。这是我不必覆盖它的问题,因为它已经在CC3Scene中声明了。因此,只要我从我的CustomSecene类nodeSelected:byTouchEvent:at:中删除了覆盖的方法就被解雇了。

希望这有助于某人