gpt4 book ai didi

ios - scenekit的SCNAction只执行一次 Action

转载 作者:行者123 更新时间:2023-11-29 01:07:34 24 4
gpt4 key购买 nike

我希望我创建的对象“掉落”到 Controller 的 View 中。我还想要无限量的物体掉落,所以继续动画直到用户转到另一个 View Controller 。我使用了一个 for 循环来组成多达 100 个对象。这是代码...

 SCNMaterial *blackMaterial = [SCNMaterial material];
blackMaterial.diffuse.contents = [UIColor blackColor];

int xcoordinate = arc4random_uniform(20);
int xcoordinateTwo = arc4random_uniform(20);

for (int i = 0; i < 100; i++){

SCNText *x = [SCNText textWithString:@"X" extrusionDepth: 2.75];
SCNNode *xNode = [SCNNode nodeWithGeometry:x];
xNode.position = SCNVector3Make(xcoordinate, 15.0, -60.0);
xNode.scale = SCNVector3Make(2.0, 2.0, 0.45);
x.materials = @[blackMaterial];
x.chamferRadius = 5.0;
SCNAction *moveTo = [SCNAction moveTo:SCNVector3Make(xcoordinate, -100.0, -60.0)duration:10.0];
[xNode runAction:moveTo];

SCNTorus * torus = [SCNTorus torusWithRingRadius:6.30 pipeRadius:2.30];
SCNNode *torusNode = [SCNNode nodeWithGeometry:torus];
torusNode.position = SCNVector3Make(xcoordinateTwo, 15.0, -60.0);
torus.materials = @[blackMaterial];
torusNode.eulerAngles = SCNVector3Make(-1.5708, 0, 0);
[torusNode runAction:moveTo];


[scene.rootNode addChildNode:torusNode];
[scene.rootNode addChildNode:xNode];

}

我的问题是每个对象只创建了一个,而不是 100 个。谁能帮我解决这个问题。

最佳答案

您实际上是在为每个对象创建 100 个:

NSLog(@"%@", scene.rootNode.childNodes);

它们都具有相同的起点和终点位置,因为您对 arc4random_uniform 的调用在循环之外。它们都在同一个地方,所以它看起来就像一个节点。

将随机数调用移到内部会分散您的节点,但它们都将在同一模拟时间创建。要连续生成它们,您可以构建一个包含一系列操作的 [SCNAction sequence:[...]]:一个创建新节点并将其添加到树中的 block 操作,然后是一个延迟行动。将其包装在 repeatActionForever: 中,并让您的根节点执行该操作。您还需要在节点到达目的地或离开视野时将其移除。

关于ios - scenekit的SCNAction只执行一次 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36165866/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com