cocos creator 3.x中如何判断节点超出屏幕外

703 阅读1分钟

理解前提

cc.view.getVisibleSize()

cocos creator 自带方法 ,返回视图窗口可见区域尺寸,运行会可以取出窗口视图的 x , y , width , height。

node.getComponent(Collider2D).worldAABB;

获取碰撞体的世界坐标系下的包围盒,它可以分别取出你想判断的节点的 最大最小xy值基于世界坐标的位置,这个值分别是xMin,xMax,yMin,yMax。 理解包围盒:

image.png

其实就是节点最边缘的位置。

实现

根据上面,我们先预置两个变量。

let colliderNode = this.node.getComponent(Collider2D);
let visibleSize = view.getVisibleSize();

如何判断超出呢? 我们拿超出屏幕左边做示例。 图例:

image.png

上图的设定的是屏幕已经超出了屏幕了,这个是时候对比应该是

colliderNode.xMax < 0 ;//判断超出了屏幕最左边

在基于世界坐标的基础上,其他超出判断同理

完整代码:

  if (worldBounds.xMax < 0 //出来屏幕最左边

            || worldBounds.xMin > visibleSize.width //超出屏幕最右边

            || worldBounds.yMin < 0  //超出屏幕底部

             ||worldBounds.yMax > visibleSize.height //超出屏幕顶部

            ) {

            // 节点超出屏幕

            console.log(' 节点超出屏幕');

        }