【发布时间】:2015-12-04 20:03:34
【问题描述】:
我的场景中有两个节点。一个是球,一个是背景。两者都作为孩子添加到场景中。
当球撞到墙上时,我正在尝试旋转球。
if (!firstNode.physicsBody.resting) {
//first node gets the reference of ball node
[firstNode runAction:[SKAction rotateToAngle:degToRad(5.0f) duration:1.0]];
}
调试器抛出错误:
SKScene:动画旋转 SKScene 无效。
我不想旋转SKScene。我正在尝试旋转 SKSpriteNode,但为什么会出现错误?
令人惊讶的是,我对我的另一个节点做了同样的事情,它没有给出任何错误。
SKAction *rotateAction = [SKAction rotateByAngle:degToRad(180.0f) duration:2.0];
[_ringNode runAction:[SKAction repeatActionForever:rotateAction]];
那为什么我的第一种情况会出现错误呢?
我正在使用didBeginContact 来检测节点之间的冲突:
在这个方法中:
-(void)didBeginContact:(SKPhysicsContact *)contact
{
SKSpriteNode * firstNode = (SKSpriteNode*)contact.bodyA.node;
SKSpriteNode * secondNode = (SKSpriteNode *)contact.bodyB.node;
}
这里第一个节点返回为SKScene,尽管我尝试将其转换为SKSpriteNode。不知何故,这堵墙被认为是SKScene。所以我无法为第一个节点设置动画,因为它是SKScene。
我可以为secondNode 设置动画,这是SKSpriteNOde。
【问题讨论】:
标签: ios objective-c rotation sprite-kit skspritenode