今天使用物理系统的时候发现, 所有的 Component 的 update 方法会在物理系统更新之前调用.
请问这样的场景如何处理呢?
在物理系统更新之后, 这时的物理状态(可能没有发生碰撞)可能并不是渲染所期望的, 但是这时已经无法通过程序来做修改了, 因为即使使用 lateUpdate 方法也是在渲染之后.
今天使用物理系统的时候发现, 所有的 Component 的 update 方法会在物理系统更新之前调用.
请问这样的场景如何处理呢?
在物理系统更新之后, 这时的物理状态(可能没有发生碰撞)可能并不是渲染所期望的, 但是这时已经无法通过程序来做修改了, 因为即使使用 lateUpdate 方法也是在渲染之后.
hi.
lateUpdate 是在渲染之前的,物理更新之后。
目前有一个这样的场景, MotionStreak 需要跟着一个物理的球移动:
第一种方式, 是挂载 RigidBody 的 Node 同时也挂载 MotionStreak, 可是没有拖尾的显示显示;
第二种方式, 是新创建一个 Node 添加了 MotionStreak, 添加到物理 Node 所在的相同 parent 下, update/lateUpdate 都会将物理 Node 的位置赋值给 MotionStreak’s Node, 这样拖尾的特效是显示了, 可是当物理 Node 速度很快的时候, 就会出现与物理 Node衔接不上的问题, 如图:
要解决这种情况, 请问有没有什么方式可以引导下?
将 MotionStreak#fadeTime 修改小可以缓解这个问题, 但是尾巴就拖不长了.
http://forum.cocos.com/t/motionstreak/58629
是cocos的bug,需要手动触发ms组件更新,可以在update里执行
this.node.getComponent(cc.MotionStreak)._onNodePositionChanged()