gpt4 book ai didi

Swift Spritekit 改变框架形状

转载 作者:行者123 更新时间:2023-11-30 10:01:55 24 4
gpt4 key购买 nike

我正在使用 Spritekit 在 Swift 中制作 IOS 游戏,玩家有一个三角形网格,我用以下代码创建:

    let viewpath = CGPathCreateMutable();

CGPathMoveToPoint(viewpath, nil, 200, 0);

CGPathAddLineToPoint(viewpath, nil, 0, 400);

CGPathAddLineToPoint(viewpath, nil, 400, 400);

CGPathAddLineToPoint(viewpath, nil, 200, 0);

let playerviewshape = SKShapeNode(path: viewpath);

playerviewshape.fillColor = SKColor(red: 1, green: 1, blue: 1, alpha: 0.1)

playerviewshape.strokeColor = SKColor(red: 1, green: 1, blue: 1, alpha: 0.2)

playerview = SKSpriteNode(texture: view.textureFromNode(playerviewshape));

playerview.zPosition = 0;

playerview.position = CGPoint(x: 0, y: 200);

player.addChild(playerview);

我想知道是否有任何敌人在三角形内,因此在更新循环中我使用 if(enemy.intersectsNode(playerview)) { 但这仅检查它是否在节点框架内,这是一个围绕三角形的矩形。我尝试过使用三角形作为 SKShapeNode,也尝试过使用 containsPoint 而不是 intersectsNode。

如何更改框架/检测相交的方式,以便仅检测位于三角形内部的 Sprite ?

最佳答案

我编写了一些代码,可用于开始设置物理:

(P.S.我不知道玩家是什么类型,所以我使用playerview只是为了举个例子..)

enum CollisionTypes: UInt32 {
case Playerview = 1 // my hero
case WarField = 2 // the warfield
case Enemy1 = 4 // simple enemies type
case Enemy2 = 8 // 2 level enemies type
case Enemy3 = 16 // boss enemies type
case Enemy4 = 32 // boss of the boss enemies type
}


playerview.physicsBody = SKPhysicsBody(texture: texture, size: texture.size())
playerview.physicsBody!.categoryBitMask = CollisionTypes.Playerview.rawValue
playerview.physicsBody!.contactTestBitMask = CollisionTypes.Enemy1.rawValue | CollisionTypes.Enemy2.rawValue | CollisionTypes.Enemy3.rawValue | CollisionTypes.Enemy4.rawValue
playerview.physicsBody!.collisionBitMask = 0

func didBeginContact(contact: SKPhysicsContact) {
if (contact.bodyA.categoryBitMask == CollisionTypes.Playerview.rawValue &&
contact.bodyB.categoryBitMask == CollisionTypes.Enemy1.rawValue) {
print("The collision was between the playerview and a enemy1")
}
...
}

关于Swift Spritekit 改变框架形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38055711/

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