纳金网

标题: GLGE系列教程–第8节:空间跟随鼠标移动 [打印本页]

作者: 会飞的鱼    时间: 2012-8-31 15:04
标题: GLGE系列教程–第8节:空间跟随鼠标移动
这一节我们来学习如何让你的空间跟随你的鼠标移动,在前几节我们学会了如何创建一个场景,但是我们只能看到两个面或者一个面,现在我们添加鼠标时间可以看到整个空间的六个面…
这一节我们来学习如何让你的空间跟随你的鼠标移动,在前几节我们学会了如何创建一个场景,但是我们只能看到两个面或者一个面,现在我们添加鼠标时间可以看到整个空间的六个面。
现在我们在javascript中创建鼠标事件,
JavaScript Code复制内容到剪贴板

//创建一个鼠标输入事件  

var mouse=new GLGE.MouseInput(document.getElementById(‘canvas’));  

//定义一个鼠标移动画布  

var mouseovercanvas;  

//定义一个常量  

var inc=0.2;  

现在我们创建鼠标移动方法  

//鼠标移动方法  

function mouselook(){}  

首先我们需要获得鼠标的当前位置:现在我们需要在canvas标签的外边在加上一个div标签,并且设置id=“ container”;  

  

//获得当前鼠标的坐标点  

var mousepos=mouse.getMousePosition();  

mousepos.x=mousepos.x-document.getElementById(“container”).offsetLeft;  

mousepos.y=mousepos.y-document.getElementById(“container”).offsetTop;  

然后我们需要做的是获得在场景中放置的摄像机,并且获得摄像机的属性值。  

//获得场景中的摄像机  

var camera=gameScene.camera;  

camerarot=camera.getRotation();  

inc=(mousepos.y-(document.getElementById(‘canvas’).offsetHeight/2))/500;  

  

定鼠标获得时间相机的初始位置,不过这句可以注释掉,我们需要摄像机跟着鼠标转。  

//鼠标移动,空间静止在x([0,0,-1,1]  

//   var trans=camera.getRotMatrix().x([0,0,-1,1]);  

var trans=GLGE.mulMat4Vec4(camera.getRotMatrix(),[0,0,-1,1]);  

var mag=Math.pow(Math.pow(trans[0],2)+Math.pow(trans[1],2),0.5);  

trans[0]=trans[0]/mag;  

trans[1]=trans[1]/mag;  

camera.setRotX(1.56-trans[1]*inc);  

camera.setRotZ(-trans[0]*inc);  

//获得canvas的宽度  

var width=document.getElementById(‘canvas’).offsetWidth;  

//判断相机  

if(mousepos.x var turn=Math.pow((mousepos.x-width*0.3)/(width*0.3),2)*0.005*(now-lasttime);  

camera.setRotY(camerarot.y+turn);  

}  

if(mousepos.x>width*0.7){  

var turn=Math.pow((mousepos.x-width*0.7)/(width*0.3),2)*0.005*(now-lasttime);  

camera.setRotY(camerarot.y-turn);  

}  

document.getElementById(“canvas”).onmouseover=function(e){mouseovercanvas=***e;}  

document.getElementById(“canvas”).onmouseout=function(e){mouseovercanvas=false;}

function render(){  

gameRenderer.render();  

mouselook();  

}
源码下载地址:http://vdisk.weibo.com/s/z77M/1314631032  来源:WebGL广播站
作者: yeu1233    时间: 2012-9-6 10:06
webGL新兴技术,值得学习




欢迎光临 纳金网 (http://rs.narkii.com/club/) Powered by Discuz! X2.5