9RIA.com天地会 - 论坛

返回列表 发帖

天地培训

9RIA天地会官方培训机构

Adobe官方认证培训中心

[PV3D] 求助!鼠标拖动立方体

立方体cube,当鼠标拖动立方体时,立方体可以跟随鼠标在地面左右,上下动,每一面都可以转到,请各位高手多多指点.

天地人才库
这个还没有试过,据说要用到四元数矩阵Quaternion,控制3D旋转相对比较完美,有时间研究一下

TOP

值得研究研究

TOP

好兄弟,讲义气!---by eko

踏上天地会荣耀之路!

 

申请舵主

加入掘金队

加入译林军

知识专题整理

 

咨询(QQ):

1442604479(小地)

 

期待中....知道答案后公布下哈!

TOP

必须指定某一平面为运动平面才可以
无法自由在空间的任意点的移动
就像人走路要以地面为参照物一样
我就是ω草·衣·薰
3D MMORPG引擎NewX3D-onweb

TOP

期待中....我现在用yaw(), pitch(), 和 roll()来控制,可无法达到  "必须指定某一平面为运动平面才可以
无法自由在空间的任意点的移动就像人走路要以地面为参照物一样" 高手指教下....拜拖咯!

TOP

值得研究一下啊

TOP

我也在关注ing----

TOP

我也在关注中 期待有人回答
梦想 =  努力 + 能力

TOP

waiting ~~~~
风轻云淡,云卷云舒

TOP


这是我自己写的,对于XY平面 鼠标drag物体的PV3D 的基类,有兴趣的可以看看。
附件: 您需要登录才可以下载或查看附件。没有帐号?注册

TOP

private var isOrbiting:Boolean;
private var previousMouseX:Number;
private var previousMouseY:Number;
private var easePitch:Number = 90;
private var easeYaw:Number = 270;
private var easeOut:Number = 0.1;

stage.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDown1);
stage.addEventListener(MouseEvent.MOUSE_MOVE,onMouseMove1);
stage.addEventListener(MouseEvent.MOUSE_UP,onMouseUp1);
鼠标按下的事件代码如下:
private function onMouseDown1(e:MouseEvent):void
{
    isOrbiting = true;
    previousMouseX = e.stageX;
    previousMouseY = e.stageY;
}
isOrbiting作为鼠标按下或弹起的标志
previousMouseX和previousMouseY保存前一帧鼠标的x,y坐标,用于鼠标移动的事件处理器中.
添加鼠标弹起处理器,只是简单的将isOrbitiong设为false
private function onMouseUp1(e:MouseEvent):void
{
    isOrbiting = false;
}

private function onMouseMove1(e:MouseEvent):void
{
    var differenceX:Number = e.stageX - previousMouseX;
    var differenceY:Number = e.stageY - previousMouseY;
    if(isOrbiting){
        camPitch += differenceY;
        camYaw += differenceX;
        previousMouseX = e.stageX;
        previousMouseY = e.stageY;
    }
}
在渲染里加入
easePitch += (camPitch - easePitch) * easeOut;
easeYaw += (camYaw - easeYaw) * easeOut;
camera.orbit(easePitch,easeYaw);

TOP

我顶,哈哈哈!

Signature--------------------------------------------------------------







美标阀门,ball valve,gate valves,silk duvet,silk comforter

TOP

以正方体的中心点为坐标旋转?

TOP

其实代码是很有内涵的,其实用stage.mouseX/Y加一个小小的算法就能让你的DisplayObject3D很好的跟随鼠标变化。
FLASH/FLEX配对开发高低简易互补

TOP

返回列表