Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 位掩码不工作。斯皮特基特斯威夫特酒店_Ios_Swift_Sprite Kit - Fatal编程技术网

Ios 位掩码不工作。斯皮特基特斯威夫特酒店

Ios 位掩码不工作。斯皮特基特斯威夫特酒店,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,有一枚硬币,它只能与玩家碰撞,不能推动它。相反,玩家(手指)被按下,它会与任何东西发生碰撞。代码如下: var coin=SKSpriteNode(imageNamed: "Coin") coin.position=CGPoint(x: xPos, y: yPos) coin.physicsBody=SKPhysicsBody(circleOfRadius: 250) //coin.physicsBody!.mass=CGFloat(mass); coin.xScale=1 coin.yScal

有一枚硬币,它只能与玩家碰撞,不能推动它。相反,玩家(手指)被按下,它会与任何东西发生碰撞。代码如下:

var coin=SKSpriteNode(imageNamed: "Coin")
coin.position=CGPoint(x: xPos, y: yPos)
coin.physicsBody=SKPhysicsBody(circleOfRadius: 250)
//coin.physicsBody!.mass=CGFloat(mass);
coin.xScale=1
coin.yScale=1

coin.name="coin";
coin.physicsBody?.contactTestBitMask=1
coin.physicsBody!.collisionBitMask=0
coin.physicsBody!.categoryBitMask=0

self.addChild(coin)
以下是播放机的设置:

Finger.physicsBody?.collisionBitMask=0;
Finger.physicsBody?.categoryBitMask=0;
Finger.physicsBody?.contactTestBitMask=1

问题是硬币的collisionBitMask设置为玩家的categoryBitMask。让我为您揭开三个冲突变量的神秘面纱:

x、 categoryBitMask:这是一种为对象“x”提供识别它的方法

x、 collisionBitMask:在这里,您将放置希望“x”能够与之碰撞(碰撞到)的对象的categoryBitMask变量

x、 contactTestBitMask:在这里,当对象与“x”接触时,您将放置要为其执行操作的对象的categoryBitMask变量。contactTestBitMask将调用苹果提供的函数“didBeginContact”,在该函数中,当硬币接触到播放器时,您可以对希望发生的事情进行编码

一些代码可以帮助您将各个部分组合在一起:

var coinCategory: UInt32 = 1 // categories must be type UInt32
var playerCategory: UInt32 = 2
var nothingCategory: UInt32 = 3 // some other number for not colliding into anything

coin.name="coin";
coin.physicsBody!.categoryBitMask= coinCategory // set category first
coin.physicsBody?.contactTestBitMask = playerContact
coin.physicsBody!.collisionBitMask = nothingCategory // doesn't crash into anything. 
// if you want coins to crash into each other then set their collisionBitMask to the coinCategory  


self.addChild(coin)
以及:


祝你好运

问题是硬币的碰撞位掩码设置为玩家的categoryBitMask。让我为您揭开三个冲突变量的神秘面纱:

x、 categoryBitMask:这是一种为对象“x”提供识别它的方法

x、 collisionBitMask:在这里,您将放置希望“x”能够与之碰撞(碰撞到)的对象的categoryBitMask变量

x、 contactTestBitMask:在这里,当对象与“x”接触时,您将放置要为其执行操作的对象的categoryBitMask变量。contactTestBitMask将调用苹果提供的函数“didBeginContact”,在该函数中,当硬币接触到播放器时,您可以对希望发生的事情进行编码

一些代码可以帮助您将各个部分组合在一起:

var coinCategory: UInt32 = 1 // categories must be type UInt32
var playerCategory: UInt32 = 2
var nothingCategory: UInt32 = 3 // some other number for not colliding into anything

coin.name="coin";
coin.physicsBody!.categoryBitMask= coinCategory // set category first
coin.physicsBody?.contactTestBitMask = playerContact
coin.physicsBody!.collisionBitMask = nothingCategory // doesn't crash into anything. 
// if you want coins to crash into each other then set their collisionBitMask to the coinCategory  


self.addChild(coin)
以及:


祝你好运

最好不要对位掩码使用整数值:

var coinCategory: UInt32 = 0x1 << 1 
var playerCategory: UInt32 = 0x1 << 2
var nothingCategory: UInt32 = 0x1 << 3 

var cointcategory:UInt32=0x1并且最好不对位掩码使用整数值:

var coinCategory: UInt32 = 0x1 << 1 
var playerCategory: UInt32 = 0x1 << 2
var nothingCategory: UInt32 = 0x1 << 3 
var cointcategory:UInt32=0x1