[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);
}
}
}
没有找到相关结果
已邀请:
1 个回复
layabox
赞同来自:
那可以肯定的是,你没有引用3D物理库,你的脚本,我添加到场景上,勾选引擎库之后,是没有报错的。