在SpriteKit

时间:2016-03-20 01:57:16

标签: objective-c inheritance sprite-kit skspritenode

当我在场景中检测到两个SKSpriteNode-s之间的冲突时,我可以捕获physicsBody.node。但是,我确信碰撞对象是我自己的一些实际继承SKSpriteNode的对象。其中一个被碰撞的是,例如,StaticLevelElement。现在,我希望通过某种转换或其他方式将SKNode分配给我的StaticLevelElement * sle。

StaticLevelElement * staticLevelElement = notTheHero.node; 

请注意,这里notT​​heHero.node是我的StaticLevelElement。这实际上有效但发出警告: "不兼容的指针类型初始化' StaticLevelElement'表达式为' SKNode' ......." 我不想要这个警告,并希望正确地做到这一点,因此它不会出现。

1 个答案:

答案 0 :(得分:0)

您可以这样做:

StaticLevelElement * staticLevelElement = (StaticLevelElement*)notTheHero.node;

它被称为类型转换。请注意,这不会更改基础实例。该实例只是以不同的方式处理。

例如,如果底层实例是SKNode或其子类,而不是StaticLevelElement,则如果您尝试将其用作StaticLevelElement,则应用可能会崩溃。

因此,如果您完全确定转换不会失败,那么这样做是安全的。