我在触摸精灵时如何执行动作,我目前使用node方法,它会检查精灵的名称,但是有什么方法可以使它在每次碰到精灵时更加准确和响应。
简而言之:当用户触摸精灵时,如何执行操作?
我不确定您所说的精灵名称是什么意思,但是我认为下面的代码示例是检查哪个SKSpriteNode被触摸的最佳方法。
#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
更新为其他问题
您可以像这样检查节点的位置:
if ((CGRectContainsPoint(sally.frame, touchLocation)) & (sally.position.y > 50))
NSLog(@"Sally's y position: %f",sally.position.y);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句