Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >SKPhysicsBody的奇怪行为

SKPhysicsBody的奇怪行为
EN

Stack Overflow用户
提问于 2017-12-21 07:48:42
回答 1查看 49关注 0票数 1

在我的应用程序中,我想以编程的方式为节点创建一个物理体。然而,当我以编程方式创建物理体时,它似乎不起作用,尽管在SpriteKit编辑器中创建的物理体确实有效。当以编程方式创建物理体时,它不会与另一个节点发生冲突,当它在编辑器中创建时,就会发生冲突。

这是我的代码:

代码语言:javascript
代码运行次数:0
复制
physicsBody = SKPhysicsBody(rectangleOf: size)

    if let body = self.physicsBody{
        body.isDynamic = true
        body.affectedByGravity = false
        body.allowsRotation = false
        body.categoryBitMask = CollisionCategoryBitmask.shootWall.rawValue
        body.collisionBitMask = CollisionCategoryBitmask.circle.rawValue
        body.contactTestBitMask = CollisionCategoryBitmask.circle.rawValue
    }

大小是节点的大小属性。

现在,当我注释掉将物理体分配给节点的第一行时,而是在SpriteKit场景编辑器中设置物理体时,它就可以工作了。请注意,在这两种情况下,if条件内的代码都正在执行。

更新

有趣的是,当我这样做时:

代码语言:javascript
代码运行次数:0
复制
physicsBody = SKPhysicsBody(bodies: [physicsBody!])

这不应该有任何影响,因为它基本上改变不了什么,然后它也不起作用。这是SpriteKit中的一个bug吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-21 14:55:03

当你这样做的时候

代码语言:javascript
代码运行次数:0
复制
required init?(coder aDecoder: NSCoder) {
    factor = 0.5
    super.init(coder: aDecoder)
    self.pBody() 

}

physicsWorld还不存在,所以身体不会被放置在这个世界上。

您希望在创建它之后执行它,所以将代码放入一个闭包中,以便在安装完成后启动。您可以使用DispatchQueue来完成这个任务。

代码语言:javascript
代码运行次数:0
复制
required init?(coder aDecoder: NSCoder) {
    factor = 0.5
    super.init(coder: aDecoder)
    DispatchQueue.main.async {
        self.pBody() //This will fire after the SKS finished building the scene, so physicsWorld will exist
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47928372

复制
相关文章
delete的奇怪行为
F的实例拥有一个value属性,但不希望在new的时候就初始化属性值(因为这个值不一定用得到,而且计算成本比较高,或者new的时候还不一定能算出来),那么自然想到通过定义getter来实现“按需计算”:
ayqy贾杰
2019/06/12
2.3K0
taskscheduler java_java – taskScheduler池的奇怪行为「建议收藏」
我有两个弹簧启动应用程序(1.4.3.RELEASE),它们位于同一台服务器上.应用程序A是一个单一的应用程序,其中包含用于处理警报的部分代码,而应用程序B是一个仅处理警报的新专用应用程序.这里的目标是打破小应用程序中的monolotic应用程序.现在,这两个代码一起运行,因为我有旧系统,总是调用应用程序A.
全栈程序员站长
2022/11/10
1.8K0
奇怪的知识
而数据中台则是将数据服务化之后提供给业务系统, 目标是将数据能力渗透到各个业务环节
solve
2022/03/30
8240
奇怪的电梯
§、奇怪的电梯(lift.cpp) §【问题描述】 §大楼的每一层楼都可以停电梯,而且第i层楼(1<=i<=N)上有一个数字Ki(0<=Ki<=N)。电梯只有四个按钮:开,关,上,下。上下的层数等于当前楼层上的那个数字。当然,如果不能满足要求,相应的按钮就会失灵。例如:3 3 1 2 5代表了Ki(K1=3,K2=3,……),从一楼开始。在一楼,按“上”可以到4楼,按“下”是不起作用的,因为没有-2楼。那么,从A楼到B楼至少要按几次按钮呢? §【输入格式】lift.in §输入文件共有二行,第一行为三个用
attack
2018/04/12
1.5K0
奇怪的颜色
计算属性值字符个数,再把所有字符分成3组,不能有余数,如果位数不够就补0, 每组颜色只有前两个字符有效并以十六进制的方式表示 ,非十六进制的字符以0表示。
GhostZhang
2022/08/22
7910
奇怪的颜色
奇怪的 Javascript
我的意思是,对于刚开始使用这种语言和他语言(例如 C++ 或 C#)的开发人员来说,javascript 可能会很奇怪。
疯狂的技术宅
2020/04/24
9590
奇怪的 Javascript
奇怪
今天在学校,用vmware workstation 7,运行ubuntu9.04,一开始用iNode拨号,提示检测到多网卡,强制断线。然后我把vmware生成的2个虚拟网卡都禁用掉,居然进入ubuntu9.04后还能上网,并且不影响物理机上网,好奇怪阿。
libo1106
2018/08/07
3140
奇怪的UnexpectedRollbackException异常
通过断点调试发现一路都很顺畅,就是在从controller层返回前段的时候会报该异常,没办法,只能通过排除法定位问题,后来逐步发现问题是出在从数据库get对象,然后如果给这个get出来的对象中的不能为空的属性赋了null值,就会报该异常。
程序员一一涤生
2019/09/10
7970
奇怪的编码问题
今天使用R爬取数据的时候发现一个奇怪的问题,我将每个属性的数据先保存在vector中,然后再合并到data.frame中时,发现打印names时数据正常显示中文,但是打印data.frame或者写入csv文件时,却始终都是utf8的格式。 代码如下:
用户2936342
2019/03/19
1.5K0
奇怪的编码问题
奇怪的死循环
#include<stdio.h> int main() { int i; int a[10]; for(i=0;i<=10;++i) { a[i]=0; printf("%d\n",a[i]); } return 0; } 该程序对应的汇编代码见如下代码: .file "cs18.c" .section .rodata .LC0: .string "%d\n" .text .gl
chinchao.xyz
2022/04/25
1.3K0
奇怪的函数调用
整理移动硬盘时,发现一个名为 attack 的目录,进去以后发现原来是一段简单的 C 语言代码。代码如下:
码农UP2U
2021/09/02
1.7K0
奇怪的函数调用
2833 奇怪的梦境
题目描述 Description Aiden陷入了一个奇怪的梦境:他被困在一个小房子中,墙上有很多按钮,还有一个屏幕,上面显示了一些信息。屏幕上说,要将所有按钮都按下才能出去,而又给出了一些信息,说明了某个按钮只能在另一个按钮按下之后才能按下,而没有被提及的按钮则可以在任何时候按下。可是Aiden发现屏幕上所给信息似乎有矛盾,请你来帮忙判断。 输入描述 Input Description 第一行,两个数N,M,表示有编号为1...N这N个按钮,屏幕上有M条信息。 接下来的M行,每行两个数ai,bi,表示bi
attack
2018/04/12
1.2K0
开发中奇怪的问题
不修改代码前好好的,刚加了些代码运行就不可以了,然后注释重新编译还是不行。
Qt君
2019/12/16
1.5K0
奇怪的Hibernate——当?遇上%
今天写了一个模糊查询的SQL语句,发现了点有趣的东东 情景: 平时写模糊查询的时候是”select * from user where username like %?%” 然后就是setPa
用户1174983
2018/02/05
1.2K0
linux的网络奇怪问题
一台虚拟机网络好使,其ip地址如下: 一台虚拟机网络不好使,其ip地址如下: 不知道是什么原因???原因如下:
黑泽君
2019/01/03
1.9K0
奇怪的go语言iota
go语言iota有点奇怪,看下面代码: package mainimport ( "fmt")const ( TestMin = -1 TestA TestB = iota TestC)func main() { fmt.Printf("TestMin:%d\n", TestMin) fmt.Printf("TestA:%d\n", TestA) fmt.Printf("TestB:%d\
李海彬
2018/03/21
1.1K0
maven—奇怪的bug「建议收藏」
使用Mavenue构建项目时。需要使用@Aspect、@Before注解,但是一直报错,但时Maven项目中确实导入进
全栈程序员站长
2022/07/01
5270
maven—奇怪的bug「建议收藏」
蓝桥杯之奇怪的比赛
对一个方阵转置,就是把原来的行号变列号,原来的列号变行号。例如,如下方阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 转置后变为: 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16 但如果是对该方阵顺时针旋转(不是转置),却是如下结果: 13 9 5 1 14 10 6 2 15 11 7 3 16 12 8 4
Max超
2019/01/21
9970
iOS 中各种奇怪的崩溃
注意,本文所有崩溃的原因都是同一个 EXC_BAD_ACCESS (code=1, address=0x11f645b98) image-20210423232626879 第一个堆栈:字典扩容 im
酷酷的哀殿
2021/04/26
1.7K1
iOS  中各种奇怪的崩溃
MySQL复制的奇怪问题跟进
没想到今天在做压力测试的时候,又碰到了类似的问题,这个问题的紧要程度要排上了日程。
jeanron100
2019/07/12
8770

相似问题

来自SKPhysicsBody applyImpulse的奇怪行为

13

应用SKPhysicsBody后检测SKPhysicsBody冲突

12

奇怪的行为

20

奇怪的行为

24

奇怪的行为

27
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文