Ome*_*men 5 sprite-kit skspritenode skphysicsjoint swift xcode6
我试图连接两个SKSpriteNode使用的SKPhysicsJointPin在anchorPoint标记为下面的截图绿点.后来我想physicsBody!.dynamic = true在object2上启用object2的"swing动画".


我在创建偶像时遇到困难SKPhysicsJointPin我甚至没有在Xcode中得到错误它不能编译.
这是代码:
import SpriteKit
class GameScene: SKScene, SKPhysicsContactDelegate {
let object1 = SKSpriteNode(imageNamed: "white")
let object2 = SKSpriteNode(imageNamed: "black")
override func didMoveToView(view: SKView) {
// Setup background image
self.backgroundColor = UIColor(hex: 0x60c0f3)
// Setup physics body to the scene (borders)
self.physicsBody = SKPhysicsBody (edgeLoopFromRect: self.frame)
// Change gravity settings of the physics world
self.physicsWorld.gravity = CGVectorMake(0, -9.8)
self.physicsWorld.contactDelegate = self
//===========================================
// White object properties
object1.physicsBody = SKPhysicsBody(rectangleOfSize: object1.frame.size)
object1.physicsBody!.dynamic = false
object1.position = CGPointMake(size.width/2 - object1.size.width/2, size.height/2)
// Black object properties
object2.physicsBody = SKPhysicsBody(rectangleOfSize: object2.frame.size)
object2.physicsBody!.dynamic = true
object1.anchorPoint = CGPointMake(0, 0)
object2.position = CGPointMake(size.width/2 + object2.size.width + 2, size.height/2 + object2.size.height/2)
// Create joint between two objects
var myJoint = SKPhysicsJointPin.jointWithBodyA(object1.physicsBody, bodyB: object2.physicsBody, anchor: CGPoint(x: CGRectGetMaxX(self.object1.frame), y: CGRectGetMaxY(self.object2.frame)))
self.physicsWorld.addJoint(myJoint)
self.addChild(object1)
self.addChild(object2)
}
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的Xcode错误是

请告知我的代码有什么问题.谢谢.
两个问题:1)您需要将包含物理体的节点添加到场景中,然后再使用关节连接它们;2)您需要以最小 Y 值而不是最大值连接节点(如果您希望关节表现良好)如图所示),因为场景的原点是视图的左下角,并且正 Y 向上。
// Do this prior to adding the joint to the world
self.addChild(object1)
self.addChild(object2)
// Create joint between two objects. Edit: changed MaxY to MinY to attach bodies
// at bottom of the nodes
var myJoint = SKPhysicsJointPin.jointWithBodyA(object1.physicsBody, bodyB: object2.physicsBody, anchor: CGPoint(x: CGRectGetMaxX(self.object1.frame), y: CGRectGetMinY(self.object2.frame)))
self.physicsWorld.addJoint(myJoint)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6900 次 |
| 最近记录: |