我有一个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'的孩子。
答案 0 :(得分:0)
使用此代码:
> parent!.physicsBody = SKPhysicsBody(texture: playerTexture, size:
> playerTexture.size())
您正在定义玩家父母的physicsBody,而不是玩家本身。那是你想做的吗?什么是球员的父母?
如果我不使用'父母!'它会起作用,
所以你有这个:
physicsBody = SKPhysicsBody(texture: playerTexture, size: playerTexture.size())
现在你要定义player
的物理身体。
但物理机构将有抵消。
检查anchorPoint
的{{1}}。如果是(0,0)将给你一个物理偏移物理。