Ios 如何在Spritekit中碰撞时更改对象特定副本的纹理?

Ios 如何在Spritekit中碰撞时更改对象特定副本的纹理?,ios,sprite-kit,collision,Ios,Sprite Kit,Collision,当我的主角精灵接触到一个检查点精灵时,我想改变检查点精灵的纹理。我目前正在使用以下代码: - (void)didBeginContact:(SKPhysicsContact *)contact { SKPhysicsBody *firstBody, *secondBody; if (contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask) { firstBody = c

当我的主角精灵接触到一个检查点精灵时,我想改变检查点精灵的纹理。我目前正在使用以下代码:

- (void)didBeginContact:(SKPhysicsContact *)contact
    {

    SKPhysicsBody *firstBody, *secondBody;

    if (contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask)
    {

        firstBody = contact.bodyA;
        secondBody = contact.bodyB;
    }
    else
    {
        firstBody = contact.bodyB;
        secondBody = contact.bodyA;
    }

    if (secondBody.categoryBitMask == 4)
    {
        [secondBody setTexture:[SKTexture textureWithImageNamed:@"balloon_PNG3395.png"]];

    }
}
-(void)didBeginContact:(skphysiccontact*)联系人
{
SKPhysicsBody*第一个Body,*第二个Body;
if(contact.bodyA.categoryBitMask
这段代码不起作用,因为我试图在SKPhysicsBody(secondBody)而不是SKSpriteNode上使用setTexture方法。我遇到的困难是secondBody引用了一个特定的spriteNode,它在地图上有多个副本,所以我不能直接引用它。我将所有这些副本都包含在一个数组中,但我不知道如何引用所联系的特定实例来更改该实例的纹理


当在复制的spriteNode实例上发生接触时,是否有人对更改spriteNode的特定实例的纹理有任何想法?是否可能有另一种更简单的方法将spriteNode的特定副本标记为已联系

你说地图上到处都是复制品是什么意思?SKNode只能设置一次父节点(即在场景中显示一次)。那么,这个映射是您自己的抽象,通过指针引用来保存节点吗?不确定指针引用是什么意思,但我在整个映射上启动了几个“检查点”对象,它们都同时出现在映射上。它们都作为副本从同一个checkpoint.m文件启动,并且都包含在设置为场景属性的可变数组中。[(SKSpriteNode*)secondBody.node setTexture:。。