[LayaAirIDE3]为什么第46行的physicsSimulation为undefine,有没有大神帮忙一下

const { regClass, property } = Laya;

@regClass()
export class MainScript extends Laya.Script {
declare owner: Laya.Scene3D;
//declare owner : Laya.Sprite;

private camera: Laya.Camera;
private ray: Laya.Ray;
private outHitResult: Laya.HitResult;

//组件被激活后执行,此时所有节点和组件均已创建完毕,此方法只执行一次
// onAwake(): void {}

//组件被启用后执行,例如节点被添加到舞台后
onEnable(): void {
this.camera = this.owner.getChildByName("Main Camera") as Laya.Camera;
this.ray = new Laya.Ray(new Laya.Vector3(0, 0, 0), new Laya.Vector3(0, 0, 0));
this.outHitResult = new Laya.HitResult();

Laya.stage.on(Laya.Event.CLICK, this, this.onMouseClick);
}

//组件被禁用时执行,例如从节点从舞台移除后
//onDisable(): void {}

//第一次执行update之前执行,只会执行一次
// onStart(): void {}

//手动调用节点销毁时执行
//onDestroy(): void {}

//每帧更新时执行,尽量不要在这里写大循环逻辑或者使用getComponent方法
// onUpdate(): void {}

//每帧更新时执行,在update之后执行,尽量不要在这里写大循环逻辑或者使用getComponent方法
//onLateUpdate(): void {}

//鼠标点击后执行。与交互相关的还有onMouseDown等十多个函数,具体请参阅文档。
// Laya.MouseManager.instance.mouseY
onMouseClick(): void {
let point = new Laya.Vector2(Laya.stage.mouseX, Laya.stage.mouseY);
// 产生射线
this.camera.viewportPointToRay(point, this.ray);
// 检测射线碰撞的物体
console.log(this.owner.physicsSimulation);
this.owner.physicsSimulation.rayCast(this.ray, this.outHitResult);

// 如果碰撞到物体
if (this.outHitResult.succeeded) {
// 获取物体
let obj = this.outHitResult.collider.owner;
console.log(obj.name);
}
}
}
已邀请:

layabox

赞同来自:

如果你的报错如下:
TypeError: Cannot read properties of undefined (reading 'rayCast')  
 
那可以肯定的是,你没有引用3D物理库,你的脚本,我添加到场景上,勾选引擎库之后,是没有报错的。

该问题目前已经被锁定, 无法添加新回复

商务合作
商务合作