gpt4 book ai didi

iOS Sprite Kit SKShapeNode 不填满整个路径

转载 作者:行者123 更新时间:2023-11-29 02:57:50 25 4
gpt4 key购买 nike

问题:SKShapeNode 有时不会绘制整个路径。如果它移动每一帧,则某些帧不会绘制。在我的真实案例场景中,我使用了非常复杂的 10 多个边形,但在这个演示中我只做了一个三角形。请参阅屏幕截图(http://imgur.com/a/50mHA)。

代码:通过将其添加到基本模板或任何场景中,然后移动鼠标(手指)来查看其实际效果。有些形状比其他形状更容易出现这种故障,但如果您移动得足够多,您会在每个形状上看到它。

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
CGPoint location = [[touches anyObject] locationInNode:self];

[self enumerateChildNodesWithName:@"path" usingBlock:^(SKNode *node, BOOL *stop) {
[node removeFromParent];
}];

CGMutablePathRef p = CGPathCreateMutable();
CGPathMoveToPoint(p, NULL, location.x-80, location.y-130);
CGPathAddLineToPoint(p, NULL, location.x+80, location.y);
CGPathAddLineToPoint(p, NULL, location.x-80, location.y+130);

CGPathCloseSubpath(p);
SKShapeNode *shape = [SKShapeNode node];
shape.name = @"path";
shape.path = p;
shape.fillColor = [UIColor redColor];

[self addChild:shape];
}

知道发生了什么吗?

编辑:我想补充一点,我试图实现的整体效果是在具有物理实体和播放器(光源)的场景中进行动态照明。我使用了来自 http://ncase.me/sight-and-light/ 的信息创建一个多边形。然而,当玩家跑过关卡时,99% 的时间它工作正常,除了 1% 的形状出现故障并且没有完全绘制。这就是我在此处的示例中展示的内容。

最佳答案

好吧,你在这里所做的事情效率非常低,这可能就是你得到这种效果的原因。

您应该做的是创建一个形状节点并将其存储在属性中...

@property (nonatomic, strong) SKShapeNode *theShapeNode;

当场景加载时,您可以创建它一次......

// in some method that runs once when the scene loads...

// path is relative to the shape node not the the scene it is in.
// by MOVING the shapeNode the path moves too.
CGMutablePathRef p = CGPathCreateMutable();
CGPathMoveToPoint(p, NULL, 0, -260);
CGPathAddLineToPoint(p, NULL, 160, 0);
CGPathAddLineToPoint(p, NULL, 0, 260);
CGPathCloseSubPath(p);

self.theShapeNode = [SKShapeNode node];
self.theShapeNode.path = p;
self.theShapeNode.fillColor = [UIColor redColor];
[self addChild:theShapeNode];

然后在touches moved方法中...

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
CGPoint location = [[touches anyObject] locationInNode:self];

self.theShapeNode.position = location;
}

这意味着每次触摸移动时,您只是重新定位已经存在的节点。您不必每次都创建路径。

关于iOS Sprite Kit SKShapeNode 不填满整个路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23680245/

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