[]viewportPointToRay产生的射线始终有偏差,是为什么?
我使用这种方式构造了一个射线:
请教一下有哪些可能可以排查这个问题?
let point = new Vector2(Laya.stage.mouseX, Laya.stage.mouseY);然后发现ray构造出来的位置始终不对,我沿着ray的方向放了一组3D物体,和从屏幕点击下去的位置始终有一定偏差~
camera.viewportPointToRay(point, this._ray);
请教一下有哪些可能可以排查这个问题?
没有找到相关结果
已邀请:
要回复问题请先登录
7 个回复
myala34
赞同来自: 155*****359
watsonsong
赞同来自:
鼠标的位置在戒指的图标处,但是摄像的终点位置却不对。
watsonsong
赞同来自:
测试主要是因为:
Laya.stage.scaleMode = Laya.Stage.SCALE_SHOWALL;
这个缩放模式引起的,这种模式下有什么特别要注意的地方么,构造Ray的时候~
qian
赞同来自:
参考 引擎示例 -3d--射线检测--射线检测
这个示例
这恶鬼示例没有误差
watsonsong
赞同来自:
设置了这种scaleMode之后,计算射线就会出问题,请看看附件的工程。
aSong
赞同来自:
要射出的点进行以下处理之后就可以了
this.point = this.changeToClientWorld(this.point)
//在showall模式下将屏幕坐标转换到client空间坐标,为射线检测偏差使用
public changeToClientWorld(input:Laya.Vector2):Laya.Vector2
{
let ratioX = (input.x / Laya.stage.width);
let ratioY = (input.y / Laya.stage.height);
let clientWidth = Laya.stage.clientScaleX * Laya.stage.width
let clientHeight = Laya.stage.clientScaleY * Laya.stage.height
// let singleX = (Laya.Browser.width - clientWidth)/2;
// let singleY = (Laya.Browser.height - clientHeight)/2;
input.x = ratioX * clientWidth;//singleX,Y 看效果自行修改
input.y = ratioY * clientHeight;
return input;
}
qian
赞同来自: