当我在场景中检测到两个SKSpriteNode-s之间的冲突时,我可以捕获physicsBody.node。但是,我确信碰撞对象是我自己的一些实际继承SKSpriteNode的对象。其中一个被碰撞的是,例如,StaticLevelElement。现在,我希望通过某种转换或其他方式将SKNode分配给我的StaticLevelElement * sle。
StaticLevelElement * staticLevelElement = notTheHero.node;
请注意,这里notTheHero.node是我的StaticLevelElement。这实际上有效但发出警告: "不兼容的指针类型初始化' StaticLevelElement'表达式为' SKNode' ......." 我不想要这个警告,并希望正确地做到这一点,因此它不会出现。
答案 0 :(得分:0)
您可以这样做:
StaticLevelElement * staticLevelElement = (StaticLevelElement*)notTheHero.node;
它被称为类型转换。请注意,这不会更改基础实例。该实例只是以不同的方式处理。
例如,如果底层实例是SKNode或其子类,而不是StaticLevelElement
,则如果您尝试将其用作StaticLevelElement
,则应用可能会崩溃。
因此,如果您完全确定转换不会失败,那么这样做是安全的。