碰撞的问题,求大佬们解答一下,谢谢~

    // 2nd step
    // forward x-axis, check whether collision on x-axis

    selfPreAabb.x = selfAabb.x;  
    otherPreAabb.x = otherAabb.x;
  //这里的赋值的目的是什么?为什么下面不直接用selfAabb otherAabb 进行碰撞对比?
  //我尝试过取消了x,y轴都取消了这个赋值,直接用selfAabb otherAabb 进行碰撞对比,物体就无法 
    停留在平台上了,求原因?

    if (cc.Intersection.rectRect(selfPreAabb, otherPreAabb)) {
        if (this.speed.x < 0 && (selfPreAabb.xMax > otherPreAabb.xMax)) {
            this.node.x = otherPreAabb.xMax - this.node.parent.x;
            this.collisionX = -1;
        }
        else if (this.speed.x > 0 && (selfPreAabb.xMin < otherPreAabb.xMin)) {
            this.node.x = otherPreAabb.xMin - selfPreAabb.width - this.node.parent.x;
            this.collisionX = 1;
        }

        this.speed.x = 0;
        other.touchingX = true;
        return;
    }

顶一下,谢谢~

赋值出发了setter,里面有你要的答案

不懂,什么触发了setter 有源码吗?


只查到这些源码的内容,但是为什么当前的 selfAabb.x; otherAabb.x就无效,而非要使用修改后的selfPreAabb,otherPreAabb 呢,求大佬说说,谢谢~

好像是一个Bug导致的,因为获取时间的偏差,导致x获取的时候和计算的时候相差一帧左右的位置,必须只用这个赋值进行重新补帧