[英]Sprite-Kit Change Image of Node when screen gets touched
There is a hero that is controlled by tapping on the screen. 有一个英雄可以通过点击屏幕来控制。 I want the hero too look a little different every time the screen gets touched.
我希望每次触摸屏幕时英雄看起来都有点不同。
What I did is setting up two images that are a little different. 我所做的是设置两个略有不同的图像。 I want the image of the hero to be changed when there is a touch event.
我希望在有触摸事件时更改英雄的形象。
Until now I set up an array to save the information in but it kinda won't work out: 到目前为止,我设置了一个数组来保存信息,但它有点无法解决:
NSMutableArray *heroFrames = [NSMutableArray array];
NSString* textureName = nil;
if (UITouchPhaseBegan) {
textureName = @"hero1.gif";
}
else {
textureName = @"hero2.gif";
}
SKTexture* texture = [SKTexture textureWithImageNamed:textureName];
[heroFrames addObject:texture];
[self setHeroFrames:HeroFrames];
self.hero = [SKSpriteNode spriteNodeWithTexture:[_heroFrames objectAtIndex:1]];
I get an exception when running this.. Any other idea how to achieve my problem? 我在运行时遇到异常..还有其他想法如何实现我的问题?
Thanks guys! 多谢你们!
Welcome to SO. 欢迎来到SO。
Try this code: 试试这段代码:
#import "MyScene.h"
@implementation MyScene
{
BOOL myBool;
SKSpriteNode *hero;
SKTexture *texture1;
SKTexture *texture2;
}
-(id)initWithSize:(CGSize)size
{
if (self = [super initWithSize:size])
{
myBool = false;
texture1 = [SKTexture textureWithImageNamed:@"hero1.gif"];
texture2 = [SKTexture textureWithImageNamed:@"hero2.gif"];
hero = [SKSpriteNode spriteNodeWithTexture:texture1];
hero.position = CGPointMake(200, 150);
[self addChild:hero];
}
return self;
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
if(myBool == true)
{
hero.texture = texture1;
myBool = false;
} else
{
hero.texture = texture2;
myBool = true;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.