我有一个矩形节点(带有矩形的物理体),我正在执行一个重复的SKAction继续移动。我读过,对具有物理体的对象执行操作可能会引起问题,所以如果将节点的物理体设置为.dynamic = false,是否可以使用SKAction来移动它而不引起问题?是否还有其他考虑因素,如设置.isAffectedByGravity = false,还是.dynamic = false属性覆盖所有其他物理属性?
发布于 2016-07-15 17:16:16
正如正式文件所解释的
动态特性控制一个以体积为基础的物体是否受到重力、摩擦力、与其他物体的碰撞以及你直接施加于该物体的力或脉冲的影响。
也是这里
一个布尔值,指示物理体是否被物理模拟移动。
默认值是true。如果这个值是假的,那么物理体就会忽略所有施加在它身上的力和冲动。此属性在基于边缘的主体上被忽略;它们是自动静态的。
显然,如果你准备让一个SKAction移动到x上,这个物体是由一种冲动把他推到另一边或同一边的,你会在速度、方向以及一般情况下由SKAction施加的附加力所引起的行为,以及物理世界中存在的物理力,产生一个不良的结果。所以答案是:是的,你可能会引起一些问题。最好使用applyImpulse或速度或其他方法在涉及物理定律的上下文中控制动态对象。
关于你的最后一个问题:
是否还有其他考虑因素,如设置.isAffectedByGravity = false,还是.dynamic = false属性覆盖所有其他物理属性?
我认为说“覆盖”这个术语是错误的:当你定义affectedByGravity时,你设置了一个影响一个物理物体的力,同样的事情可能是关于dynamic,而其他的参数,比如质量,密度,面积,摩擦力。属性(自身带来的特性)
发布于 2016-07-15 16:05:24
如果你的雪碧是.dynamic,那么所有的物理特性都会影响它。尽管如此,您仍然可以使用SKActions来移动它。如果.dynamic = false,那么所有的物理属性都会被覆盖,而不会对您的Sprite起作用。
https://stackoverflow.com/questions/38400319
复制相似问题