2015-07-12 178 views
0

我有我想要在遊戲中SpriteKit實施質地:iOS的紋理渲染

http://imgur.com/gallery/toh3W7h/new

正如你可以看到,有兩個橫條。 SpriteNode應該穿過這兩個小節,它們都應該是堅實的並且與小精靈有聯繫。

但是,由於某種原因,頂部欄不會提供與spriteNode的任何碰撞,並且SpriteNode只是簡單地通過它,底部欄完全按照它應該的那樣工作,I.E. spriteNode可以與它聯繫。

儘管這是一個文件,所以這對我來說絕對沒有意義。爲什麼只有底部的欄渲染。

這裏是我的紋理代碼:

let pointnodeTexture = SKTexture(imageNamed: "pointnode") 

let pointnode = SKSpriteNode(texture: pointnodeTexture, size:pointnodeTexture.size()) 

pointnode.physicsBody = SKPhysicsBody(texture: runningbarTexture, size: runningbarTexture.size()) 
pointnode.physicsBody?.affectedByGravity = false 
pointnode.physicsBody?.pinned = true 
pointnode.physicsBody?.dynamic = false 

pointnode.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMaxY(self.frame)/1.5) 

是否有這個解決方案的任何?謝謝。

回答

1

我相信這個問題是

pointnode.physicsBody = SKPhysicsBody(texture: runningbarTexture, size: runningbarTexture.size()) 

的實際工作。如果我沒有記錯,從紋理製作物理實體時會嘗試創建1個形狀,並從左下角開始。由於您具有透明像素,因此只能在底部的條形圖上繪製。

爲了得到你想要的結果,你將不得不把它分成兩個單獨的精靈。現在,如果您仍然想要一起控制位置,則可以嘗試製作兩個小精靈,並將它們添加到父節點並移動父項。

希望有幫助。

編輯

它會看起來是這樣的......

let pointnodeTexture = SKTexture(imageNamed: "pointnode") //single bar texture 

    let pointnode = SKNode() 

    let distanceApart : CGFloat = 20.0 

    let bar1 = SKSpriteNode(texture: pointnodeTexture, size:pointnodeTexture.size()) 

    bar1.physicsBody = SKPhysicsBody(texture: bar1.texture, size: bar1.size) 
    bar1.physicsBody?.affectedByGravity = false 
    bar1.physicsBody?.pinned = true 
    bar1.physicsBody?.dynamic = false 
    bar1.position = CGPointMake(0.0, distanceApart) 

    pointnode.addChild(bar1) 

    let bar2 = SKSpriteNode(texture: pointnodeTexture, size:pointnodeTexture.size()) 

    bar2.physicsBody = SKPhysicsBody(texture: bar2.texture, size: bar2.size) 
    bar2.physicsBody?.affectedByGravity = false 
    bar2.physicsBody?.pinned = true 
    bar2.physicsBody?.dynamic = false 
    bar2.position = CGPointMake(0.0, -distanceApart) 

    pointnode.addChild(bar2) 

    pointnode.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMaxY(self.frame)/1.5) 

我也注意到你正在使用你的物理身體不同的質地比你用什麼來創建你的原始代碼你的精靈。 pointnodeTexture vs runningbarTexture不知道你想要哪個紋理,但是你應該使用相同的紋理來創建精靈和物理體。

希望這會讓你指出正確的方向。

+0

這聽起來像是一個合理的解決方案。我已經考慮將它們分成兩個精靈,但是,正如你所說的,這個位置可能會在其他框架尺寸的英雄節點上出現奇怪的現象。我會接受你的答案,如果你能告訴我一些代碼,將它添加到父母的樣子。 (我是初學者)謝謝 – TerranceW

+0

@ TerranceW更新我的答案,希望這是有道理的。 –

+0

這很有道理,我很欣賞它。 – TerranceW