2015-04-07 77 views
0

我剛剛添加了碰撞,現在我的「英雄」會前往他想要的位置,然後傳送到屏幕的左側,然後我只能看到約1/8的他! Here for ImageXcode Swift移動的位置 - 碰撞

這裏是我添加碰撞的代碼,這隻發生在我將Dynamic設置爲「true」的情況下,如果我將它設置爲false,他會去他想要的位置,我可以完全看到他!但是我需要將Dynamic設置爲true,這樣他才能碰到我添加到碰撞中的牆壁。

var heroCategory: UInt32 = 1 
    var wallCategory: UInt32 = 2 

    hero = CSHero() 
    hero.position = CGPointMake(70, movingGround.position.y + movingGround.frame.size.height/2 + hero.frame.size.height/2) 
    hero.physicsBody = SKPhysicsBody(rectangleOfSize: hero.size) 
    hero.physicsBody?.dynamic = true 
    hero.physicsBody?.allowsRotation = false 
    hero.physicsBody?.categoryBitMask = heroCategory 
    hero.physicsBody?.collisionBitMask = wallCategory 
    addChild(hero) 

    wallGenerator = CSWallGenerator(color: UIColor.clearColor(), size: view.frame.size) 
    wallGenerator.position = view.center 
    wallGenerator.physicsBody = SKPhysicsBody(rectangleOfSize: wallGenerator.size) 
    wallGenerator.physicsBody?.dynamic = false 
    wallGenerator.physicsBody?.categoryBitMask = wallCategory 
    wallGenerator.physicsBody?.collisionBitMask = heroCategory 

我該如何得到它,所以當我將Dynamic設置爲true時,他會處於我想要的位置?

回答

0

它看起來像你的牆是你的整個視圖,你是如何讓你的牆上的碰撞盒?你可能會在屏幕外踢你的英雄。

+0

我相信你的意思是**這個**代碼? 'FUNC generateWall(){ VAR規模:CGFloat的 設蘭特= arc4random_uniform(2)如果 蘭特== 0 { 規模= -1.0 }否則{ 規模= 1.0 } 設壁= CSWall() wall.position.x = size.width/2 + wall.size.width/2 wall.position.y = scale *(kCSGroundHeight/2 + wall.size.height/2) addChild(牆)' –

+0

或者這個代碼'let WALL_WIDTH:CGFloat = 30.0 let WALL_HEIGHT:CGFloat = 50.0 let WALL_COLOR = UIColor.blackColor() override init(){ super.init(texture:nil,color:WALL_COLOR,size:CGSizeMake(WALL_WIDTH,WALL_HEIGHT)) startMoving() }' –

+0

抱歉。它已經有一段時間,因爲我做了sprite套件,你有足夠的信息: 'wallGenerator.physicsBody = SKPhysicsBody(edgeLoopF​​romRect:wallGenerator.frame)'是你想要做的,這隻會給你一個邊緣。 – Knight0fDragon