首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SKPhysicsBody的.dynamic性质

SKPhysicsBody的.dynamic性质
EN

Stack Overflow用户
提问于 2016-07-15 15:50:11
回答 2查看 136关注 0票数 1

我有一个矩形节点(带有矩形的物理体),我正在执行一个重复的SKAction继续移动。我读过,对具有物理体的对象执行操作可能会引起问题,所以如果将节点的物理体设置为.dynamic = false,是否可以使用SKAction来移动它而不引起问题?是否还有其他考虑因素,如设置.isAffectedByGravity = false,还是.dynamic = false属性覆盖所有其他物理属性?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-15 17:16:16

正如正式文件所解释的

动态特性控制一个以体积为基础的物体是否受到重力、摩擦力、与其他物体的碰撞以及你直接施加于该物体的力或脉冲的影响。

也是这里

一个布尔值,指示物理体是否被物理模拟移动。

默认值是true。如果这个值是假的,那么物理体就会忽略所有施加在它身上的力和冲动。此属性在基于边缘的主体上被忽略;它们是自动静态的。

显然,如果你准备让一个SKAction移动到x上,这个物体是由一种冲动把他推到另一边或同一边的,你会在速度、方向以及一般情况下由SKAction施加的附加力所引起的行为,以及物理世界中存在的物理力,产生一个不良的结果。所以答案是:是的,你可能会引起一些问题。最好使用applyImpulse速度或其他方法在涉及物理定律的上下文中控制动态对象。

关于你的最后一个问题:

是否还有其他考虑因素,如设置.isAffectedByGravity = false,还是.dynamic = false属性覆盖所有其他物理属性?

我认为说“覆盖”这个术语是错误的:当你定义affectedByGravity时,你设置了一个影响一个物理物体的力,同样的事情可能是关于dynamic,而其他的参数,比如质量,密度,面积,摩擦力。属性(自身带来的特性)

票数 1
EN

Stack Overflow用户

发布于 2016-07-15 16:05:24

如果你的雪碧是.dynamic,那么所有的物理特性都会影响它。尽管如此,您仍然可以使用SKActions来移动它。如果.dynamic = false,那么所有的物理属性都会被覆盖,而不会对您的Sprite起作用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38400319

复制
相关文章

相似问题

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