gpt4 book ai didi

ios - 增加可以按下 SKNode 的区域

转载 作者:行者123 更新时间:2023-11-28 22:14:47 25 4
gpt4 key购买 nike

我想知道是否有一种简单的方法可以使用 SKNode 并增加它被按下的区域。

例如,我目前正在检查一个节点是否被点击,如下所示:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint positionInScene = [touch locationInNode:self];
SKNode *node = [self nodeAtPoint:positionInScene];
if ([node.name isEqualToString:TARGET_NAME]) {
// do whatever
}
}
}

如果在屏幕上绘制的节点大约为 40 x 40 像素,是否有一种方法可以让用户在距离节点 10 像素以内单击时呈现为已单击?

谢谢!

最佳答案

您可以添加一个不可见的 Sprite 节点作为可见节点的子节点。使子节点的大小大于可见节点的大小。

例如,在 OSX 上,这将适用于一个场景:

-(id)initWithSize:(CGSize)size {    
if (self = [super initWithSize:size]) {
SKSpriteNode *visibleNode = [[SKSpriteNode alloc] initWithColor:[NSColor yellowColor] size:CGSizeMake(100, 100)];
visibleNode.name = @"visible node";
visibleNode.position = CGPointMake(320, 240);

SKSpriteNode *clickableNode = [[SKSpriteNode alloc] init];
clickableNode.size = CGSizeMake(200, 200);
clickableNode.name = @"clickable node";

[visibleNode addChild:clickableNode];
[self addChild:visibleNode];
}
return self;
}

-(void)mouseDown:(NSEvent *)theEvent
{
CGPoint positionInScene = [theEvent locationInNode:self];
SKNode *node = [self nodeAtPoint:positionInScene];
NSLog(@"Clicked node: %@", node.name);
}

可点击节点从可见节点的边缘向外延伸 50px。在其中单击将输出“Clicked node: clickable node”。

名为“可见节点”的节点将永远不会通过调用 [self nodeAtPoint:positionInScene] 返回,因为可点击节点覆盖它。

同样的原则也适用于 iOS。

关于ios - 增加可以按下 SKNode 的区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21979380/

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