gpt4 book ai didi

ios - 获取碰撞点时遇到问题

转载 作者:行者123 更新时间:2023-11-30 14:18:28 25 4
gpt4 key购买 nike

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

我无法访问我在其他帖子中看到的联系点。碰撞中的 CCContactSet 仅提供点数和法线。

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

那么如何获得接触点来创建接头呢?我应该使用普通的方法吗?如果可以的话怎么办?

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
}

最佳答案

您可以通过 CCPhysicsCollisionPaircontacts 属性访问接触点。

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;

通过 points 数组,您可以访问每个涉及的形状的确切碰撞位置。

关于ios - 获取碰撞点时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30830773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com