cc.pIntersectPoint有替代方法吗?

升级2.0.7后,api中已经去除了cc.pIntersectPoint()方法,我现在需要计算两条线的交点,请问有替代的api吗?

https://docs.cocos.com/creator/api/zh/classes/Intersection.html?h=intersect

不一样,Intersection只是返回是否相交,而我要的是相交的具体位置

这代码不复杂,你可以吧1.9.x的源码看了后直接放你自己的工具类使用

参考:https://docs.cocos.com/creator/api/zh/classes/Intersection.html#intersection-类型

使用cc.Intersection.lineLine这个api可以判断两线段是否相交

如果要求出确切的交点,可以参考自己写:https://stackoverflow.com/questions/563198/how-do-you-detect-where-two-line-segments-intersect/565282#

或者,定制一下引擎,将之前的cc.pLineIntersect方法复制到cc.Intersection里面,稍微小改一下即可

cc.pLineIntersect = function (A, B, C, D, retP) {
    if ((A.x === B.x && A.y === B.y) || (C.x === D.x && C.y === D.y)) {
        return false;
    }
    var BAx = B.x - A.x;
    var BAy = B.y - A.y;
    var DCx = D.x - C.x;
    var DCy = D.y - C.y;
    var ACx = A.x - C.x;
    var ACy = A.y - C.y;

    var denom = DCy * BAx - DCx * BAy;

    retP.x = DCx * ACy - DCy * ACx;
    retP.y = BAx * ACy - BAy * ACx;

    if (denom === 0) {
        if (retP.x === 0 || retP.y === 0) {
            // Lines incident
            return true;
        }
        // Lines parallel and not incident
        return false;
    }

    retP.x = retP.x / denom;
    retP.y = retP.y / denom;

    return true;
};

真是服了引擎组,瞎几把改整天,既然不复杂为何删除这个api?能不能像u3d学习学习啊,看看人家那mathf多全面。

这块后面会修改补全的,主要加入了2.5d后,这一块基础数学库得重新整理一下

好吧,给你们加油!希望数学库能扩充的全面一点,可以参考u3d的那个。

谢谢!

这么改太不负责任了,改动了起码要说一下怎么替换吧

请问,啥时候能补cc.pIntersectPoint这个方法啊?现在还有计划么?