[LayaAir 2.0]Camera.viewportToRay中origin与direction相等问题
目前使用的是LayaAir2.0版本做的以下内容.
我在一个脚本里继承了Laya.Script然后写了以下方法:
主要目的就是做射线碰撞检测.
GameManager.instance.mainCamera其实就是场景里唯一的相机(从Unity里导出的)但是屡次不能成功.后来我在调试的时候发现只要走完: GameManager.instance.mainCamera.viewportPointToRay(this._rayPt, this._ray)方法以后this._ray.origin和this._ray.direction的值就完全相同!
更奇妙的事情发生了,看下图:
当代码运行到4700行时out.origin还是一个正常值(与相机位置基本相同),而代码运行到4704行时,out.origin就与out.direction相同了!
我对js引擎理解不深,不知是什么原因,请各位指教!
最后我的解决办法就是在GameManager.instance.mainCamera.viewportPointToRay(this._rayPt, this._ray)之后加一行:
this._ray.origin = GameManager.instance.mainCamera.transform.position即可完美执行射线碰撞检测.
我在一个脚本里继承了Laya.Script然后写了以下方法:
主要目的就是做射线碰撞检测.
onStageMouseDown(): void {
this._rayPt.x = Laya.MouseManager.instance.mouseX;
this._rayPt.y = Laya.MouseManager.instance.mouseY;
GameManager.instance.mainCamera.viewportPointToRay(this._rayPt, this._ray);
let scene = this.owner.scene as Laya.Scene3D;
scene.physicsSimulation.rayCast(this._ray, this._raycastHit);
console.log(this._raycastHit.succeeded);
if(this._raycastHit.succeeded)
console.log(this._raycastHit.collider.owner.name);
}
GameManager.instance.mainCamera其实就是场景里唯一的相机(从Unity里导出的)但是屡次不能成功.后来我在调试的时候发现只要走完: GameManager.instance.mainCamera.viewportPointToRay(this._rayPt, this._ray)方法以后this._ray.origin和this._ray.direction的值就完全相同!
更奇妙的事情发生了,看下图:
当代码运行到4700行时out.origin还是一个正常值(与相机位置基本相同),而代码运行到4704行时,out.origin就与out.direction相同了!
我对js引擎理解不深,不知是什么原因,请各位指教!
最后我的解决办法就是在GameManager.instance.mainCamera.viewportPointToRay(this._rayPt, this._ray)之后加一行:
this._ray.origin = GameManager.instance.mainCamera.transform.position即可完美执行射线碰撞检测.
没有找到相关结果
已邀请:
要回复问题请先登录
2 个回复
Aar0n
赞同来自:
SNAKE
赞同来自:
老是忘了js没有值类型一说.