嘿我正试图获得碰撞点,然后在那个点为两个节点创建一个关节。我不确定我的结果意味着什么,或者如何得到我想要的东西。
我无法访问我在其他帖子中看到的联系点。碰撞中的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
}
答案 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;
数组,您可以访问每个相关形状的精确碰撞位置。