flash 3d flash3d 研究所 pv3d 共享资源  | 经典范例  | 视频教程  | 友情链接  | 联系我们
登陆 | 注册  flash 3d 研究所
讨论区





最近更新:
● 无语瓶阁下在教程区里 回复“《超简易papervision3D基础 ...”(18:09:44)
● payday loan阁下在教程区里 回复“《pv3d, sandy, away3d...”(05:56:23)
● bad credit payday loan阁下在教程区里 回复“《超简易papervision3D基础 ...”(05:56:13)
浏览主题:pv3d 键盘控制 平移摄像非物体失败 求助

pv3d 键盘控制 平移摄像非物体失败 求助
king26951 (2010-08-08 12:03:02)


package {
       
        import flash.display.Sprite;
        import flash.events.KeyboardEvent;
        import flash.ui.Keyboard;
       
       
        import org.papervision3d.cameras.CameraType;
        import flash.events.Event;
import org.papervision3d.materials.ColorMaterial;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.objects.primitives.Plane;
import org.papervision3d.view.BasicView;
public class nb extends BasicView
{
       
private var grid:DisplayObject3D;
private var rotX:Number = 0.5;
private var rotY:Number = 0.5;
private var camPitch:Number = 90;
private var camYaw:Number = 270;
private var camTarget:DisplayObject3D;
private var keyR:Boolean;//右
private var keyL:Boolean;//左
private var keyW:Boolean;//上
private var keyS:Boolean;//下
private var keyQ:Boolean;
private var keyE:Boolean;
public function nb()
{
       
        super(stage.stageWidth,stage.stageHeight,true,false,CameraType.FREE);
stage.frameRate = 40;
init();
startRendering();
}
private function init():void
{
stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownHandler);
stage.addEventListener(KeyboardEvent.KEY_UP,keyUpHandler);
grid = new DisplayObject3D();
scene.addChild(grid);

var numberOfColumns:int = 14;
var numberOfRows:int = 10;
var planeSize:int = 80;
var planeSpacing:Number = 86;
var centerOffsetX:Number = numberOfColumns * planeSpacing * 0.5 - planeSpacing * 0.5;
var centerOffsetY:Number = numberOfRows * planeSpacing * 0.5 - planeSpacing * 0.5 ;
for(var i:uint = 0; i < numberOfColumns; i++)
{
for(var j:uint = 0; j < numberOfRows; j++)
{
       
       
var plane:Plane = new Plane(new ColorMaterial(Math.random() * 0xFFFFFF), planeSize,planeSize);
plane.material.doubleSided = true;
plane.x = i * planeSpacing - centerOffsetX;
plane.y = j * planeSpacing - centerOffsetY;
grid.addChild(plane);
camera.focus = 20;
camera.target = grid;
camera.fov = 20;
}
}}
private function keyDownHandler(e:KeyboardEvent):void
switch( e.keyCode)
{
       
       
case "W".charCodeAt():
case Keyboard.UP:
keyW = true;
keyS = false;
break;
case "S".charCodeAt():
case Keyboard.DOWN:
keyS = true;
keyW = false;
break;
case "A".charCodeAt():
case Keyboard.LEFT:
keyL = true;
keyR = false;
break;
case "D".charCodeAt():
case Keyboard.RIGHT:
keyR = true;
keyL = false;
break;
case "Q".charCodeAt():
keyQ = true;
keyE = false;
break;
case "E".charCodeAt():
keyE = true;
keyQ = false;
break;
}
}
private function keyUpHandler(e:KeyboardEvent):void
{
switch(e.keyCode)
{
case "W".charCodeAt():
case Keyboard.UP:
keyW = false;
break;
case "S".charCodeAt():
case Keyboard.DOWN:
keyS = false;
break;
case "A".charCodeAt():
case Keyboard.LEFT:
keyL = false;
break;
case "D".charCodeAt():
case Keyboard.RIGHT:
keyR = false;
break;
case "Q".charCodeAt():
keyQ = false;
break;
case "E".charCodeAt():
keyE = false;
break;
}
}
override protected function onRenderTick(e:Event=null):void
{
moveObject();
camera.target = null;
super.onRenderTick();
}
private function moveObject():void
{
if(keyW)
{
camera.moveUp(30);
}
else
if(keyS)
{
camera.moveDown(30);
}

if(keyR)
{
camera.moveRight(30);
}
else
if(keyL)
{
camera..moveLeft(30);
}
if(keyQ)
{
camera..moveForward(30);
}
else
if(keyE)
{
camera..moveBackward(30);
}

现在是只能远近缩放  不能平移。求助大家
 
 


flash 3d 研究所 DDM君
(2010-08-08 12:39:34)
请您再详细的描述一下,我们比较好判断^_^

另外,我们不推荐直接把代码一大堆贴出来,其实别人也确实没时间看的,不是吗,呵呵^_^~

flash 3d 研究所 king26951
(2010-08-08 14:02:47)
现在是只能远近缩放 不能平移摄像机
感觉我写的不对,但是也看不出什么地方出错了?所以就贴出来了
按键时也有反应.之后又返回了,达不到平移的效果,希望能像这样平移http://www.xiaos8.com/uploads/flash/factory.swf
请 DDM君
指点指点

flash 3d 研究所 DDM君
(2010-08-08 21:05:06)
您平移的时候必须要同时平移camera的target的位置也要跟着平移才行,但是当然不能直接去平移target对应的物体。
不知道这样讲对您有没有帮助,呵呵。

评论人:
邮   箱: (填入邮箱,博客地址均可)

内   容: (广告和垃圾内容可能会被删除,望理解)
链接地址

验证码:(为防止机器人骚扰,请麻烦输入验证码^_^)
  

(目前需登陆方可发表)


不想添加了