升级2.0.7后,api中已经去除了cc.pIntersectPoint()方法,我现在需要计算两条线的交点,请问有替代的api吗?
不一样,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这个方法啊?现在还有计划么?