gpt4 book ai didi

ios - Sprite Kit - SKSpriteNode 绘制在错误的位置

转载 作者:搜寻专家 更新时间:2023-11-01 06:10:40 25 4
gpt4 key购买 nike

每当我尝试绘制 SKSpriteNode 时,它​​都会被绘制得比应有的低。但似乎其他 SKSpriteNode 工作正常,没有问题。

这是我当前的代码:

func initMainGround() {
let gSize = CGSizeMake(self.size.width/4*3, 120);
ground = SKSpriteNode(color: SKColor.brownColor(), size: gSize);
ground.name = gName;

ground.position = CGPointMake(0, 0);

ground.physicsBody = SKPhysicsBody(rectangleOfSize: ground.size);
ground.physicsBody.restitution = 0.0;
ground.physicsBody.friction = 0.0;
ground.physicsBody.angularDamping = 0.0;
ground.physicsBody.linearDamping = 0.0;
ground.physicsBody.allowsRotation = false;
ground.physicsBody.usesPreciseCollisionDetection = true; //accurate collision
ground.physicsBody.affectedByGravity = false;
ground.physicsBody.dynamic = false;
ground.physicsBody.categoryBitMask = gBitmask;
ground.physicsBody.collisionBitMask = pBitmask;

self.addChild(ground);
}

func addBomb() {
let bomb = SKSpriteNode(imageNamed: "trap");
bomb.size = CGSizeMake(30, 30);
bomb.position = CGPointMake(ground.position.x, actualY+10);

bomb.physicsBody = SKPhysicsBody(circleOfRadius: bomb.size.width/2);
bomb.physicsBody.restitution = 0.0;
bomb.physicsBody.allowsRotation = false;
bomb.physicsBody.usesPreciseCollisionDetection = true;
bomb.physicsBody.affectedByGravity = false;
bomb.physicsBody.dynamic = false;
bomb.physicsBody.categoryBitMask = bBitmask;
bomb.physicsBody.collisionBitMask = pBitmask;
bomb.physicsBody.contactTestBitMask = pBitmask;

self.addChild(bomb);
}

虽然炸弹应该几乎直接在地面上方,但炸弹似乎在地面上方将近 100+。
由于游戏是横屏模式,地面应该几乎占据屏幕高度的三分之一,但它比正常情况低得多。

为什么地面画错了,炸弹却画对了?

最佳答案

这听起来和我开始使用 SpriteKit 时遇到的问题一样。如果您的游戏使用 .sks 文件来呈现它的主场景(默认情况下),则该场景使用 .sks 文件中定义的任意维度值。

尝试动态设置场景的尺寸,看看是否是这种情况。在您的 didMoveToView 函数中,在函数顶部添加如下内容:

self.size = view.bounds.size

这样,.sks 文件中的尺寸值将被您的实际屏幕尺寸覆盖。

希望这对您有所帮助!

关于ios - Sprite Kit - SKSpriteNode 绘制在错误的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24694873/

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