如何使用SKPhysicsJointPin连接两个SKSpriteNode – swift
发布时间:2020-12-14 02:23:32 所属栏目:百科 来源:网络整理
导读:我试图在下面的截图标记为绿点的anchorPoint上使用SKPhysicsJointPin连接两个SKSpriteNode. 后来我想在object2上启用physicsBody!.dynamic = true来获取object2的“swing动画”. 我在创建SKPhysicsJointPin时一开始遇到困难,即使我在Xcode中没有得到错误它
我试图在下面的截图标记为绿点的anchorPoint上使用SKPhysicsJointPin连接两个SKSpriteNode.
后来我想在object2上启用physicsBody!.dynamic = true来获取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 */ } } 我得到的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,y: CGRectGetMinY(self.object2.frame))) self.physicsWorld.addJoint(myJoint) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |