gpt4 book ai didi

ios - Sprite Kit - 设置位置不做任何事情

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:04:31 25 4
gpt4 key购买 nike

我试图在球击中球门后将其重置到屏幕中间,但在声明过程中声明它的位置后,我似乎无法再设置它的位置。

这就是我定义我的球的方式:

-(void)setUpBall {
self.ball = [SKSpriteNode spriteNodeWithImageNamed:@"Ball"];
self.ball.name = bName;
self.ball.position = CGPointMake(self.frame.size.width/2, self.frame.size.height/2);

self.ball.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:self.ball.frame.size.width/2];
self.ball.physicsBody.restitution = 1.0;
self.ball.physicsBody.angularDamping = 0.0;
self.ball.physicsBody.linearDamping = 0.0;
self.ball.physicsBody.friction = 0.0;
self.ball.physicsBody.dynamic = true;
self.ball.physicsBody.allowsRotation = false;
self.ball.physicsBody.usesPreciseCollisionDetection = true;
self.ball.physicsBody.categoryBitMask = bCategory;
self.ball.physicsBody.collisionBitMask = pCategory | borderCategory;
self.ball.physicsBody.contactTestBitMask = borderCategory;
[self addChild:self.ball];

[self.ball.physicsBody applyImpulse:CGVectorMake(15, 10)];
}

这是我将球重置到屏幕中间的代码

-(void)reset {
NSLog(@"reset method ran");
[self.ball setPosition: CGPointMake(self.size.width/2, self.size.height/2)];
}

似乎 reset 方法确实运行了,因为 NSLog(@"reset method ran"); 有输出,但是球总是像setPosition 根本不起作用

最佳答案

如果它是测试碰撞或其他事情的调用结果,那么在 Sprite Kit 中执行诸如设置位置之类的操作可能不起作用。如果您需要重置它,您可能需要向球添加一个 BOOL 属性以对其进行标记,然后在更新所有 Sprite 时调用重置。

我有一个小行星类型的游戏,当对玩家发射的导弹进行碰撞检测时,我试图用 3 block 较小的岩石替换一颗大的小行星——它没有工作,因为在 Sprite 的碰撞检查部分期间设置了位置套件更新循环。当我在更新循环的标准部分添加新岩石时,它运行良好。

关于ios - Sprite Kit - 设置位置不做任何事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24401998/

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