[]3D模型旋转问题,鼠标移动之后,根据按下移动的X坐标差值判断左右旋转,但是会越转越快,请问是什么问题?


private mouseMove(state: Laya.RenderState):void{
// console.log(mX + "移动");
// console.log(this.lastMouseX + "按下");
let mX:number = Laya.stage.mouseX;
let mY:number = Laya.stage.mouseY;
let vec:Laya.Vector3 ;
if(this.isDown){
if(this.lastMouseX - mX > 0)
{
vec = new Laya.Vector3(0,-1,0);
}
else
{
vec = new Laya.Vector3(0,1,0);
}
this.rotate(vec);
}
}
 
监听的鼠标移动事件
Laya.stage.on(Laya.Event.MOUSE_UP,this,this.mouseUp);
Laya.stage.on(Laya.Event.MOUSE_DOWN,this,this.mouseDown);
Laya.stage.on(Laya.Event.MOUSE_MOVE,this,this.mouseMove);
 
private mouseDown():void{
let mX:number = Laya.stage.mouseX;
this.lastMouseX = mX;
this.isDown = true;
}
private mouseUp():void{
this.isDown = false;
}

public rotate(vec:Laya.Vector3):void{
this.entity.transform.rotate(vec,true,false);
}
 
已邀请:

Aar0n

赞同来自:

你逻辑写的就是每次都比以前快一个向量,逻辑问题要自己解决

君昊

赞同来自:

Laya.Vector3(0,1,0)或Laya.Vector3(0,-1,0);这两行代码里面的-1或1改成 (全局变量值- 鼠标当前位置)%360,全局变量值是记录鼠标上一次移动的位置。即是(全局变量值- 鼠标当前位置)%360;全局变量值 =  鼠标当前位置;就好了。这样就可以鼠标移动快模型就转的快,鼠标移动慢模型就慢
 

要回复问题请先

商务合作
商务合作