[SceneKit]碰撞检测(六)

进行碰撞检测的前提是必须是两个物体之间才能进行碰撞, SceneKit 框架已经为我们准备好了物体引擎, 我们不需要关心他是怎么进行碰撞检测的, 只需要关心, 我们需要什么样的物理效果, 剩下的就交给物理引擎来完成.

在场景中, 我们需要的是小球与边框之间的碰撞, 然后, 当小球到达边缘之后, 在进行反弹, 然后继续运动.
默认情况下, 添加到场景中的节点都是不具备物理运动效果的. 我们需要添加.

ok, 首先我们先给小球添加物理效果, 如下图所示的内容添加

屏幕快照 2017-07-23 下午1.56.50.png

接下来看下每个设置选项的属性的含义, 以及该如何去设置

•Physics Body:确定物体的类型。将球的类型设置为动态体,这意味着场景套件物理引擎将完全控制球的运动。在[SceneKit]物理仿真模拟(二)中, 已经解释过了不同type的含义.
•Settings:允许您微调物理体的行为。对于球,将质量(Mass)和恢复原则(Restitution)设置为1, 清除所有其他物理设置,并取消选中受重力影响(Affected by gravity)并允许休息(Allows resting)。这将使球弹起自由而不受重力的束缚。
•Velocity:影响物理体的速度和方向。给球(x:5,y:0,z:5)的线速度。一旦场景开始运行,这将给球一个初始的力量。将线性因子设置为(x:1,y:0,z:1),这将使可能施加到y轴上的球的任何物理力消除,从而保持球固定在相同的y位置有什么关系。

关与给球(x:5,y:0,z:5)的线速度。一旦场景开始运行,这将给球一个初始的力量。的解释
首先, 我们是按照向量的来进项运算的, 小球的初始位置是(0,0,0), 这是一个三维的向量, 然后我们给小球一个终点的位置(5,0,5), 这也是一个向量, 然后两个向量相加, (0,0,0)+(5,0,5)=(5,0,5), 求出最后运动的位置, 此处正式用到了向量相加的物理意义
在物理上的意义:合向量的效果=几个分向量效果之合(力、位移、速度、加速度等)

Mass

指定物体以千克为单位的质量, 默认为1为动态的物体, 默认为0为静态的物体

Restitution

当一个物体运动时与某个物体发生碰撞进行反弹时, 理论上来说是会有一部分能量被消失掉的, 当他在进行反弹时, 速度会比刚运动时的速度小, 以此类推, 直到停止, Restitution值设置为1, 即代表, 每次进行反弹时, 其携带的能量和刚开始的能量是一样的, 并不会因为反弹而减少, 这样小球就能一直无止境的进行运动反弹下去了.

•Bit masks:用于稍后设置冲突。将“类别”掩码设置为1.它将一个位掩码值分配给球。此掩码用于创建冲突组并唯一标识某些节点。然后,物理引擎使用这些信息,然后根据这些掩码应用碰撞计算,以确定哪些对象相冲突,哪些对象不相关。
•物理形状:定义碰撞检测期间使用的物理实体的实际形状。将Shape设置为Sphere。

位掩码

一、碰撞掩码分为以下三种:

  1. CategoryBitmask:该掩码会与另一个物体的另外两个掩码ContactTestBitmask、CollisionBitmask按位与,来确定是否可以碰撞
  1. ContactTestBitmask:确定两个物体碰撞时是否调用碰撞检测的代理方法
  2. CollisionBitmask:确定两个物体是否允许碰撞

如果希望A和B允许碰撞,则
A的CategoryBitmask与B的CollisionBitmask与运算结果为0
B的CategoryBitmask与A的CollisionBitmask与运算结果为0
否则A和B就不允许碰撞,接触后直接弹开

如果希望A和B发生碰撞检测,即调用onContactBegin,则
A的CategoryBitmask与B的ContactTestBitmask与运算结果不为0
B的CategoryBitmask与A的ContactTestBitmask与运算结果不为0

OK, 小球的物体引擎效果添加完毕, 下面添加边框的物理引擎

首先全选Barriers, 此时选中的物理几何体都被标记成了黄色的框框

屏幕快照 2017-07-23 下午2.17.46.png

如下设置Barriers

屏幕快照 2017-07-23 下午2.18.21.png

•Physical Body:对于类型,将其设置为静态主体,以便障碍物不会移动,也不会随动作移动。
•Setting:清除所有设置并将恢复设置为1,使其在碰撞发生时不会损失能量。取消选中这两个复选框,以便障碍物也不受重力的影响。
•Bit masks:将类别掩码设置为2,将碰撞掩码设置为1.这样可以将类别位掩码设置为2,并将其设置为与类别位掩码为1的对象相冲突 - 与您给出的相同类别位掩码。
•Physics Shape:Shape设置为Default shape, Type为Bounding Box。因为两侧障碍是带有子节点的节点,所以该选项更为合适,因为边界框围绕该组内的所有子节点创建边界。如果你看场景编辑器,你会发现有一个红色的线框,它显示了当您运行游戏时物理机构的外观。

此时点击预览效果的按钮

屏幕快照 2017-07-23 下午2.42.12.png

你将会看到小球在运动

Jietu20170723-144920.gif

关与各个属性是什么意思, 我也没全部搞清楚, 也没找到具体的文档, 资料比较少, 苹果官方的文档写的并不是很清楚.

具体代码
SceneEditor是一个添加好物体控件, 未添加物理引擎的工程
SceneEditor_Collision_Detection是一个添加了碰撞检测的工程工程
https://github.com/JasonSparrow/SceneKit

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容