遇到碰撞问题

时间:2015-06-14 14:52:50

标签: ios swift cocos2d-iphone physics

嘿我正试图获得碰撞点,然后在那个点为两个节点创建一个关节。我不确定我的结果意味着什么,或者如何得到我想要的东西。

我无法访问我在其他帖子中看到的联系点。碰撞中的CCContactSet只给出了点数和正常值。

我在碰撞开始时输出法线,左墙为(1.0,-0.0),底墙为(-0.0,1.0),右墙为(-1.0,0.0),(-0.0,-1.0)为顶墙。我基本上不理解他们。我知道他们只是指第二个船体,但无论我在碰撞过程中如何旋转或定位助推器,结果都保持不变。它们只有在我旋转hullPiece时才会改变。

那么我如何获得联络点以创建关节?我应该使用正常的,如果是这样的话?

newSprite = CCSprite(imageNamed: "Booster.png")
newSprite.position = CGPoint(x: 200, y: 200)
newSprite.scale = 4.0
let spritePhysics = CCPhysicsBody(rect: newSprite.textureRect, cornerRadius: 0)
spritePhysics.collisionType = "booster"
spritePhysics.sensor = true
newSprite.physicsBody = spritePhysics
editorPhysics.addChild(newSprite)

newSprite2 = CCSprite(imageNamed: "HullPiece.png")
newSprite2.position = CGPoint(x: 200, y: 200)
newSprite2.scale = 4.0
let spritePhysics2 = CCPhysicsBody(rect: newSprite2.textureRect, cornerRadius: 0)
spritePhysics2.collisionType = "hull"
spritePhysics2.sensor = true
newSprite2.physicsBody = spritePhysics2
editorPhysics.addChild(newSprite2)

func ccPhysicsCollisionBegin(pair: CCPhysicsCollisionPair!, booster: CCNode!, hull: CCNode!) -> ObjCBool
{
    NSLog("contact point\(pair.contacts.count) \(pair.contacts.normal)")
    return true
}

1 个答案:

答案 0 :(得分:0)

您可以通过contacts的{​​{1}}媒体资源访问联络点。

这里是CCPhysicsCollisionPair结构的样子:

contacts

通过typedef struct CCContactSet { /// The number of contact points in the set. /// The count will always be 1 or 2. int count; /// The normal of the contact points. CGPoint normal; /// The array of contact points. struct { /// The absolute position of the contact on the surface of each shape. CGPoint pointA, pointB; /// Penetration distance of the two shapes. /// The value will always be negative. CGFloat distance; } points[2]; } CCContactSet; 数组,您可以访问每个相关形状的精确碰撞位置。