gpt4 book ai didi

ios - 设置 SpriteKit 节点的位置(游戏中)

转载 作者:行者123 更新时间:2023-11-29 01:14:27 26 4
gpt4 key购买 nike

我正在使用 Sprite Kit 和 Swift 2,目前在将我的节点位置设置到游戏中期的一个非常具体的位置时遇到了问题。例如,如果我单击一个按钮,我希望玩家的位置变为 (50,50)。

但是当我尝试使用

player.position = CGPointMake(50,50)

没有任何反应。我看到人们说这是一个通过添加以下行修复的错误:

player.physicsBody = player.physicsBody

但是这对我没有任何作用。我也试过这样做:

player.position.x = 50
player.position.y = 50

但这也什么都不做 :(.

这里还有玩家的声明:

var player = SKSpriteNode(imageNamed: "blue")
player.name = "player"
player.position = CGPoint(x: 50, y: 100)
addChild(player)
player.size = CGSize(width: ogSquareSize!, height: ogSquareSize!)
player.physicsBody = SKPhysicsBody(rectangleOfSize: player.size)
player.physicsBody?.dynamic = true
player.physicsBody?.usesPreciseCollisionDetection = true
player.physicsBody?.affectedByGravity = true;
player.physicsBody?.allowsRotation = true
player.physicsBody?.mass = 15;

就像我说的,它正常移动,我可以看到它,并且它与场景正常交互,但如果我尝试直接改变它的位置,则什么也不会发生。

这是我尝试调用我的代码以更改其位置的地方:

func didBeginContact(contact: SKPhysicsContact) {
let contactMask = contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask
switch(contactMask) {
case playerCategory | object2Category:

let player = childNodeWithName("player") as! SKSpriteNode
player.position.y += 100;

default:
return
}
}

基本上这里发生的事情是我告诉它如果它与另一个物体碰撞则将其位置向上移动 100(我不是试图进行人工碰撞我实际上有一个很好的理由像这样向上移动它) .

有什么想法吗?谢谢!

最佳答案

用新位置填充全局变量

didBeginContact

并更改位置

didSimulatePhysics

关于ios - 设置 SpriteKit 节点的位置(游戏中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35397005/

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