parent physicsBody不起作用

时间:2017-05-12 02:13:11

标签: swift sprite-kit

我有一个GameScene.sks和Player.sks。 Player.sks存储玩家精灵,由3个部分组成(身体,手[身体的孩子]和灯笼[手的孩子])。在这个场景的自定义类中,我从图像创建了playerTexture并将其设置为物理体。

let playerTexture = SKTexture(imageNamed: "player_outline")
parent!.physicsBody = SKPhysicsBody(texture: playerTexture, size: playerTexture.size())

我将玩家场景参考添加到游戏场景中。当我移动玩家时,物理身体留在精灵身后并且根本不移动。如果我不使用'父母!'它会工作,但物理机构将有抵消。 但是如果我从场景编辑器创建物理体,它就可以了!发生了什么事?

Player.swift

class PlayerNode: SKSpriteNode, EventListenerNode {
func didMoveToScene() {
    let playerTexture = SKTexture(imageNamed: "player_outline")
    parent!.physicsBody = SKPhysicsBody(texture: playerTexture, size: playerTexture.size())

    parent!.physicsBody!.categoryBitMask = PhysicsCategory.Player
    parent!.physicsBody!.collisionBitMask = PhysicsCategory.Wall
}
}

GameScene.swift

var player: PlayerNode!
player = childNode(withName: "//player") as! PlayerNode

Player.swift 玩家的身体被称为“玩家”,手臂被称为“lanternAm”,它是“玩家”的孩子,被称为“灯笼”的灯笼,它是'lanternArm'的孩子。

1 个答案:

答案 0 :(得分:0)

使用此代码:

> parent!.physicsBody = SKPhysicsBody(texture: playerTexture, size:
> playerTexture.size())

您正在定义玩家父母的physicsBody,而不是玩家本身。那是你想做的吗?什么是球员的父母?

  

如果我不使用'父母!'它会起作用,

所以你有这个:

physicsBody = SKPhysicsBody(texture: playerTexture, size: playerTexture.size())

现在你要定义player的物理身体。

  

但物理机构将有抵消。

检查anchorPoint的{​​{1}}。如果是(0,0)将给你一个物理偏移物理。