首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当雪碧被触摸时执行动作

当雪碧被触摸时执行动作
EN

Stack Overflow用户
提问于 2014-04-27 23:05:50
回答 1查看 200关注 0票数 2

当我触碰sprite时,我如何执行操作?我目前使用节点方法,它检查sprite的名称,但是是否有任何方法可以使它在每次触碰雪碧时都更准确和响应。

简而言之:当用户触摸到一个精灵时,我如何执行一个操作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-27 23:21:17

我不知道您所说的精灵名是什么意思,但我认为下面的代码示例是检查哪个SKSpriteNode被碰过的最好方法。

代码语言:javascript
复制
#import "MyScene.h"

@implementation MyScene
{
    SKSpriteNode *frank;
    SKSpriteNode *sally;
}

-(id)initWithSize:(CGSize)size
{
    if (self = [super initWithSize:size])
    {
        frank = [SKSpriteNode spriteNodeWithColor:[SKColor blueColor] size:CGSizeMake(50, 50)];
        frank.position = CGPointMake(100, 100);
        [self addChild:frank];

        sally = [SKSpriteNode spriteNodeWithColor:[SKColor redColor] size:CGSizeMake(50, 50)];
        sally.position = CGPointMake(300, 100);
        [self addChild:sally];
    }
    return self;
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    CGPoint touchLocation = [touch locationInNode:self.scene];

    if (CGRectContainsPoint(frank.frame, touchLocation))
        NSLog(@"Frank");

if (CGRectContainsPoint(sally.frame, touchLocation))
        NSLog(@"Sally");
}

-(void)update:(CFTimeInterval)currentTime
{
    //
}

@end

更新以获取附加问题

您可以像这样检查节点的位置:

代码语言:javascript
复制
if ((CGRectContainsPoint(sally.frame, touchLocation)) & (sally.position.y > 50))
    NSLog(@"Sally's y position: %f",sally.position.y);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23330133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档