如何使对象在随机时间在某个地方生成并在产生后移动到某个方向

时间:2016-07-31 15:05:53

标签: swift scenekit

如何使场景的根节点在某个位置产生自身的重复(例如:x:10,y:10,z:10) 然后向一个方向移动,直到它们完全脱离屏幕然后消失。

我没有要求代码,但我要求如何执行此操作(例如,我用什么来复制根节点?

如何让该节点消失?

如何生成1到10之间的随机数,以确定何时产生副本?)

如何使我的帖子符合质量标准?

2 个答案:

答案 0 :(得分:0)

您需要使用广义的节点并随机生成实例。

Here是关于如何在Swift中创建随机数的答案。用它来制作介于1和10之间的三个不同的随机数,并使用节点类构造函数,并将三个随机数作为输入。

最后,要以随机方向移动节点,您需要在节点类中使用一些移动函数并为其提供随机数。

This就是你提出一个好问题的方法。

答案 1 :(得分:0)

以下是答案:

你可以:

  1. 首先使用“node.clone”或“node.copy”复制rootnode。

    克隆复制整个节点树(节点和子节点),而复制仅复制该节点。

  2. 接下来将副本分配给变量(以便您可以访问它)。

  3. 然后根据需要添加任何操作(参见下文)。

  4. 然后在你的产卵循环或你用来产生对象的任何东西中,克隆一个克隆(我们在第2步中创建的变量),并用随机数设置它为position

  5. 要生成可以是正面或负面的随机数,请使用以下内容:

    ((((Float(arc4random()) / Float(UINT32_MAX))*2)-1)*5)//five is the important
    //number here because it means you will get a number ranging from
    // -5 to 5
    
    1. 然后添加您需要的任何操作(参见下文)。

    2. 最后致电scene.rootNode.addChildNode(theNodeYouJustPositioned)

    3. 删除节点调用node.removeFromParentNode

    4. 操作:

      另外,要自己删除节点,并将节点自己定位在循环等中,并自行移动节点,可以使用SCNAction

      要使用SCNAction,只需致电node.runAction(SCNAction)即可。 使用SCNAction的方式有很多种,所以请访问文档以获取整个列表。

      要使节点自身定位(排序),请尝试运行runblock:^node:SCNNode{}并将节点的位置设置为随机数。

      节点现在将其自定位,因此您可以跳过步骤4.

      现在,如果您想按固定方向移动节点(我的意思是“非随机”),您可以在步骤3中添加moveBy:xyz操作。

      但如果它必须是随机方向,你可以在步骤5中执行此操作并将随机数输入其中。

      要使用时间延迟删除节点,您可以使用sequence:操作并输入数组,其中首先包含waitForDuration:Seconds操作,最后包含removeFromParentNode操作。< / p>

      请访问SCNAction以及我提到的您可能无法理解的任何其他课程的文档。

      我不知道swift(根本)所以我确信代码中有一些语法错误。 (对不起)

      如果您感到困惑,请在下方发表评论。 谢谢!