http://jsfiddle.net/techsin/CxFRC/15/所有 chrome 都只能单击和拖动,向上和向后箭头。
pastebin.com/gXS1J7zw
问题:我不能c=$('.con')
横向移动/平移。我已经成功地做到了前后。但我不能锻炼侧身的公式。
这是我的第一次尝试。使用箭头键,前进和后退的作品有不同的功能。但左右没有。
有问题的代码:您无需担心左右的其余代码主逻辑就在这里。我试过找到垂直角,但它的行为相反,然后相反。
第一个有效且无需注意的代码:
function forwBack(x){
az+= x*(Math.cos((Math.PI/180)*ry))*Math.cos((Math.PI/180)*rx)*speed;
ax-= x*(Math.sin((Math.PI/180)*ry))*Math.cos((Math.PI/180)*rx)*speed;
ay+= x*(Math.sin((Math.PI/180)*rx))*speed;
}
现在代码不符合我的要求......垂直于矢量翻译。
function rightLeft(x){
az+= Math.sin(ry*(Math.PI/180))*(Math.cos((rx+90)*(Math.PI/180))*speed*x);
ax-= Math.cos(ry*(Math.PI/180))*(Math.cos((rx+90)*(Math.PI/180))*speed*x);
ay+= Math.sin((rx+90)*(Math.PI/180))*speed*x;
}
x 是决定左/右或前/后的符号。速度在这里是斜边。Pi/180 度到弧度。弧度为 180/Pi。(绕 x 轴旋转) rx 和 ry 在函数 ch.. 中定义,表示 main(.ma) 容器的旋转。rx 由鼠标的垂直移动定义。
我不需要这样做,但我想这样做。我想让 3d explorer 像一个大厅……只是为了好玩。我曾经像 9 年前那样在 Flash 中做这种事情。那时我还是个孩子。
主要问题是横向并不总是-x或+x,它取决于外部容器旋转了多少(围绕xyz)。因此,如果 m 围绕 y 轴旋转 90 度,只告诉 c 移动 x+ 会使 c 实际上看起来像是在 z 中返回或减小。
连续尝试两天后,我无法解决此问题。
http://jsfiddle.net/techsin/hGkMj/1/ -- 签出 3d
http://jsfiddle.net/techsin/hGkMj/6/ -- 签出 3d
http://jsfiddle.net/techsin/9YjSC/3 我这样做是为了清楚地了解我想要做什么。移动鼠标,并使用箭头键。需要在预览窗口中点击。