理解前提
cc.view.getVisibleSize()
cocos creator 自带方法 ,返回视图窗口可见区域尺寸,运行会可以取出窗口视图的 x , y , width , height。
node.getComponent(Collider2D).worldAABB;
获取碰撞体的世界坐标系下的包围盒,它可以分别取出你想判断的节点的 最大最小xy值基于世界坐标的位置,这个值分别是xMin,xMax,yMin,yMax。 理解包围盒:
其实就是节点最边缘的位置。
实现
根据上面,我们先预置两个变量。
let colliderNode = this.node.getComponent(Collider2D);
let visibleSize = view.getVisibleSize();
如何判断超出呢? 我们拿超出屏幕左边做示例。 图例:
上图的设定的是屏幕已经超出了屏幕了,这个是时候对比应该是
colliderNode.xMax < 0 ;//判断超出了屏幕最左边
在基于世界坐标的基础上,其他超出判断同理
完整代码:
if (worldBounds.xMax < 0 //出来屏幕最左边
|| worldBounds.xMin > visibleSize.width //超出屏幕最右边
|| worldBounds.yMin < 0 //超出屏幕底部
||worldBounds.yMax > visibleSize.height //超出屏幕顶部
) {
// 节点超出屏幕
console.log(' 节点超出屏幕');
}