不知道我是否过度思考这个问题......但是我正在努力调整我的角色向不同方向移动时所显示的精灵。
例如,如果玩家手指在角色上方,我希望它转到'moveUp'框架。如果玩家的手指低于我想要进入'moveDown'框架的角色,否则保持在'normalState'框架。
有人能给我看一个例子吗?或者直接告诉我一个关于以这种方式实现Sprite表/ Sprites的一般指南。
我已经完成并在演示项目中使用精灵表,但我希望发布这个并希望以正确和最成功的方式接近它。
谢谢!
答案 0 :(得分:1)
我假设你已经制作了你的精灵表和/或打包它(我喜欢TexturePacker)。代码类似于:
...init...
//Place all sprite frames from sprite sheet into cache
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"spriteSheet.png"];
CCSpriteBatchNode *gameBatchNode = [CCSpriteBatchNode batchNodeWithFile:@"spriteSheet.png"];
CCSprite *player = [CCSprite spriteWithSpriteFrameName:@"moveUp"];
[gameBatchNode addChild: player];
....
- (void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *aTouch = [touches anyObject];
CGPoint touchPosition = [player.parent convertTouchToNodeSpace:aTouch];
CGPoint touchPositionRelativeToPlayer = ccpSub(touchPosition, player.position);
if(touchPositionRelativeToPlayer.y > 0)
[player setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"moveUp"]];
else
[player setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"moveDown"]];
}
如果你想要其他方向(W,E,NW等),我建议你使用touchPositionRelativeToPlayer
将atan2
转换为一个角度,并从中确定帧。