mirror of
https://gitee.com/dgflash/oops-framework.git
synced 2026-05-11 19:21:18 +08:00
28 lines
961 B
TypeScript
28 lines
961 B
TypeScript
import { Camera, Vec3, view } from "cc";
|
|
|
|
export class CameraUtil {
|
|
/**
|
|
* 当前世界坐标是否在摄像机显示范围内
|
|
* @param camera 摄像机
|
|
* @param worldPos 坐标
|
|
* @returns
|
|
*/
|
|
public static isInView(camera: Camera, worldPos: Vec3) {
|
|
var cameraPos = camera.node.getWorldPosition();
|
|
var viewPos = camera.worldToScreen(worldPos);
|
|
var dir = Vec3.normalize(new Vec3(), worldPos.subtract(cameraPos));
|
|
var forward = camera.node.forward;
|
|
var dot = Vec3.dot(forward, dir);
|
|
|
|
const viewportRect = view.getViewportRect();
|
|
|
|
// 判断物体是否在相机前面
|
|
if (dot > 0
|
|
// 判断物体是否在视窗内
|
|
&& (viewPos.x <= viewportRect.width) && (viewPos.x >= 0)
|
|
&& (viewPos.y <= viewportRect.height) && (viewPos.y >= 0))
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
} |