首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >碰撞位掩蔽英雄穿过每一件事物,甚至地面

碰撞位掩蔽英雄穿过每一件事物,甚至地面
EN

Stack Overflow用户
提问于 2015-02-13 02:10:28
回答 1查看 151关注 0票数 1

我试图避免英雄和硬币之间的碰撞,而不是英雄和草场之间的碰撞。一旦我把碰撞位面具应用到英雄身上,我的英雄就会穿过每一件东西。我要它穿过硬币,而不是穿过草场。这是密码,有什么想法吗?

代码语言:javascript
复制
let HEROCATEGORY: UInt32 = 0x1 << 1;
let GROUNDCATEGORY: UInt32 = 0x1 << 2;
let FIRECATEGORY: UInt32 = 0x1 << 3;
let COINCATEGORY: UInt32 = 0x1 << 4;
let NUMBERCATEGORY: UInt32 = 0x1 << 5;

heroSprite.physicsBody!.categoryBitMask = HEROCATEGORY;
heroSprite.physicsBody!.collisionBitMask = 0x10000000;
heroSprite.physicsBody!.contactTestBitMask = GROUNDCATEGORY | FIRECATEGORY | COINCATEGORY | NUMBERCATEGORY;

grassGround.physicsBody!.categoryBitMask = GROUNDCATEGORY;
grassGround.physicsBody!.collisionBitMask = 0x01000000;

coinSprite.physicsBody!.categoryBitMask = COINCATEGORY;
coinSprite.physicsBody!.contactTestBitMask = HEROCATEGORY;
coinSprite.physicsBody!.collisionBitMask = 0x10000000;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-13 02:19:21

如果英雄只能探测到与地面的碰撞,那么英雄的凸起位掩码应该是

代码语言:javascript
复制
heroSprite.physicsBody?.collisionBitMask = GROUNDCATEGORY

要检测与地面和其他东西的碰撞,您应该使用或运算符将两个categoryBitMasks组合起来。

代码语言:javascript
复制
 heroSprite.physicsBody?.collisionBitMask = GROUNDCATEGORY | SOMETHINGCATEGORY

contactTestBitMask用于在两体之间的接触中得到一个回调。当两个对象共享相同的空间时,我们会得到一个回调。它不处理碰撞。

我想你需要的是用火和硬币进行接触探测和地面碰撞探测。所以,只需将heroSprite的冲突位掩码设置为GROUNDCATEGORY,就像在我的第一个代码片段中一样。

代码语言:javascript
复制
let HEROCATEGORY: UInt32 = 0x1 << 1
let GROUNDCATEGORY: UInt32 = 0x1 << 2
let FIRECATEGORY: UInt32 = 0x1 << 3
let COINCATEGORY: UInt32 = 0x1 << 4
let NUMBERCATEGORY: UInt32 = 0x1 << 5

heroSprite.physicsBody!.categoryBitMask = HEROCATEGORY
heroSprite.physicsBody!.collisionBitMask = GROUNDCATEGORY // changed
heroSprite.physicsBody!.contactTestBitMask = GROUNDCATEGORY | FIRECATEGORY | COINCATEGORY | NUMBERCATEGORY

grassGround.physicsBody!.categoryBitMask = GROUNDCATEGORY
grassGround.physicsBody!.collisionBitMask = HEROCATEGORY

coinSprite.physicsBody!.categoryBitMask = COINCATEGORY
coinSprite.physicsBody!.contactTestBitMask = HEROCATEGORY
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28491427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档