RayCast结果异常

先放代码:

import { _decorator, Component, Node, input, Input,EventTouch, EventMouse, math, Vec2, Vec3} from ‘cc’;

import { geometry, Camera,PhysicsSystem } from ‘cc’;

const { ccclass, property } = _decorator;

@ccclass(‘RayTest’)

export class RayTest extends Component {

@property(Camera)

private cameraCom: Camera;

@property(Node)

demo:Node;

private _ray = new geometry.Ray();

start() {

    input.on(Input.EventType.MOUSE_DOWN,this.clickFunc,this);

    // 获得一条途径屏幕坐标(0,0)发射出的一条射线

    const outRay = new geometry.Ray();

    //this.cameraCom.screenPointToRay(0, 0, outRay);

}

update(deltaTime: number) {

   

}

public clickFunc(event:EventMouse){

    console.log("getUILocation:",event.getUILocation());

    console.log("getLocation:",event.getLocation());

    console.log("getLocationInView:",event.getLocationInView());

    this.cameraCom.screenPointToRay(event.getLocationX(), event.getLocationY(), this._ray);

    console.log("ray:",this._ray);

    //基于物理碰撞器的射线检测

    if (PhysicsSystem.instance.raycast(this._ray)) {

        const r = PhysicsSystem.instance.raycastResults;

        for (let i = 0; i < r.length; i++) {

            const item = r[i];

            //if (item.collider.node.uuid == this.Model.uuid) {

                //射线检测到的物体如果是Model的话执行这里

            //}

            console.log("item.collider.node.uuid:",item.collider.node);

        }

    }

}

}

项目是这样的其中Cube是那个方块,有BoxCollied,并且不会动
screen
我运行游戏然后对着方块一顿狂点,然后结果是有些帧有射线检测结果,有些帧则没有,我有把Ray印出来,可以看到Ray是一模一样的,然是前一帧没有触发 console.log(“item.collider.node.uuid:”,item.collider.node);后一帧却触发了log
有人知道是怎么回事吗?这个薛定谔的射线检测如果发生在真正上线的游戏里会造成灾难性的使用者体验吧

顶一下,大家的Raycast结果稳定吗?

顶一下,不会大家都不常用这个功能吧?大部分人只做2D?

顶一下…

在用没有但是目前没有出现你的问题

有可能是调用时机的问题,问下你是在什么时候调用这个方法的?也是在MOUSE_DOWN事件吗?

顶下…