gpt4 book ai didi

ios - 碰撞时 Sprite 不移动

转载 作者:行者123 更新时间:2023-11-29 01:55:40 25 4
gpt4 key购买 nike

当我检测到与 Sprite 的碰撞时,我希望它 (fuelSprite) 移动到一个新的随机生成的位置。

我像这样生成 Sprite

//setup fuel

SKSpriteNode *fuel = [SKSpriteNode spriteNodeWithImageNamed:@"fuel.png"];

fuel.position = CGPointMake(arc4random_uniform(self.frame.size.width), arc4random_uniform(self.frame.size.height));
[fuel setScale:0.6];
fuel.zPosition = 1;
fuel.shadowCastBitMask = 1;

fuel.name = @"fuelNode";
fuel.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:fuel.frame.size];

fuel.physicsBody.dynamic = FALSE;

fuel.physicsBody.affectedByGravity = false;
fuel.physicsBody.usesPreciseCollisionDetection = YES;
fuel.physicsBody.categoryBitMask = fuelCategory;

fuel.physicsBody.collisionBitMask = fuelCategory | fireCategory;
fuel.physicsBody.contactTestBitMask = fireCategory;

[self addChild:fuel];

[_items addObject:@"fuelNode"];

然后当检测到碰撞时我想捕获 Sprite (数组中的唯一东西)并移动它

-(void)didBeginContact:(SKPhysicsContact *)contact
{
NSLog(@"contact detected");

SKPhysicsBody *firstBody;
SKPhysicsBody *secondBody;

if (contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask)
{
firstBody = contact.bodyA;
secondBody = contact.bodyB;
}
else
{
firstBody = contact.bodyB;
secondBody = contact.bodyA;
}
NSLog(@"Hit");
score ++;

SKSpriteNode *object = [_items firstObject];

object.position = CGPointMake(arc4random_uniform(self.frame.size.width), arc4random_uniform(self.frame.size.height));

}

这在我的 fuelSprite 和 items 数组的头文件中

@property (nonatomic, strong) SKSpriteNode *fuelSprite;
@property (nonatomic) NSMutableArray *items;

出于某种原因,我无法让 Sprite 移动到新的随机位置:(

命中检测工作正常,NSlog 显示

最佳答案

您正在向数组中添加一个字符串而不是 Sprite 。尝试更换

[_items addObject:@"fuelNode"];

[_items addObject:fuel];

另外,由于这个声明

SKSpriteNode *object = [_items firstObject];

返回一个 NSString 而不是 SKSpriteNode,使用 object 作为 Sprite 应该会导致异常。我怀疑 objectnil 因为你的数组没有正确分配。

您可以访问场景中的 Sprite

SKSpriteNode *object = [self childNodeWithName:@"fuelNode"];

而不是将其添加到数组中。

关于ios - 碰撞时 Sprite 不移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30897732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com