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)
浏览主题:为什么立方体会原地旋转啊?

为什么立方体会原地旋转啊?
(2009-10-24 19:12:36)

看教程做的 应该是边转弯边向前 现在按下w+a(或者d)它就原地旋转了!!!!!

下面是代码:


package {
     import flab3d.*;
     import flash.display.Sprite;
     import flash.events.Event;
     import flash.events.KeyboardEvent;
     import flash.ui.Keyboard;
     import org.papervision3d.core.math.Number3D;
     import org.papervision3d.objects.DisplayObject3D;
     import org.papervision3d.cameras.SpringCamera3D;
     import org.papervision3d.materials.BitmapMaterial;
     import org.papervision3d.render.BasicRenderEngine;
     import org.papervision3d.scenes.Scene3D;
     import org.papervision3d.view.Viewport3D;
     import org.papervision3d.events.FileLoadEvent;
     import org.papervision3d.materials.utils.MaterialsList;
     import org.papervision3d.materials.BitmapFileMaterial;
     import org.papervision3d.view.layer.util.ViewportLayerSortMode;
     import org.papervision3d.core.clipping.FrustumClipping;
     import org.papervision3d.objects.parsers.DAE;
     import org.papervision3d.objects.primitives.Plane;
     public class Game3D extends Sprite {
           private var viewport:Viewport3D;
           private var renderer:BasicRenderEngine;
           private var scene:Scene3D;
           private var springCamera:SpringCamera3D;
           private var m:BitmapFileMaterial;
           private var dae:DAE;
           private var plane:Plane;
           private var topSpeed:Number=0;
           private var topSteer:Number=0;
           private var speed:Number=0;
           private var steer:Number=0;
           private var keyRight:Boolean=false;
           private var keyLeft:Boolean=false;
           private var keyForward:Boolean=false;
           private var keyReverse:Boolean=false;
           //
           public function Game3D() {
                 viewport=new Viewport3D(640,480);
                 addChild(viewport);
                 scene=new Scene3D();
                 addEventListener(Event.ENTER_FRAME,enterFrameHandler);
                 stage.addEventListener(KeyboardEvent.KEY_DOWN,stage_keyDownHandler);
                 stage.addEventListener(KeyboardEvent.KEY_UP,stage_keyUpHandler);
                 setupScene();
           }
           private function setupScene():void {
                 springCamera=new SpringCamera3D ;
                 springCamera.mass=10;
                 springCamera.damping=10;
                 springCamera.stiffness=1;
                 springCamera.lookOffset=new Number3D(0,0,10);
                 springCamera.positionOffset=new Number3D(0,5,-15);
                 springCamera.near=-10000;
                 renderer=new BasicRenderEngine ;
                 //
                 var materials:MaterialsList = new MaterialsList();
                 materials.addMaterial(new BitmapFileMaterial("map_car.jpg"));
                 dae = new DAE();
                 dae.load("a.dae",materials);
                 dae.scale=50;
                 springCamera.target=dae;
                 scene.addChild(dae);
                 //
                 plane=new Plane(null,1500,1500,4,4);
                 plane.pitch(90);
                 scene.addChild(plane);
           }
           private function updateCar():void {
                 dae.yaw(speed * steer / 500);
                 dae.moveForward(speed);
           }
           private function driveCar():void {
                 if (keyForward) {
                       topSpeed=7;
                 } else if ( keyReverse ) {
                       topSpeed=-2;
                 } else {
                       topSpeed=0;
                 }
                 speed -= ( speed - topSpeed ) / 10;
                 if (keyRight) {
                       if (topSteer<45) {
                             topSteer+=1.5;
                       }
                 } else if ( keyLeft ) {
                       if (topSteer>-45) {
                             topSteer-=1.5;
                       }
                 } else {
                       topSteer-=topSteer/24;
                 }
                 steer -= ( steer - topSteer ) / 2;
           }
           //
           private function stage_keyDownHandler( event :KeyboardEvent ):void {
                 switch ( event.keyCode ) {
                       case "W".charCodeAt() :
                       case Keyboard.UP :
                             keyForward=true;
                             keyReverse=false;
                             break;

                       case "S".charCodeAt() :
                       case Keyboard.DOWN :
                             keyReverse=true;
                             keyForward=false;
                             break;

                       case "A".charCodeAt() :
                       case Keyboard.LEFT :
                             keyLeft=true;
                             keyRight=false;
                             break;

                       case "D".charCodeAt() :
                       case Keyboard.RIGHT :
                             keyRight=true;
                             keyLeft=false;
                             break;
                 }
           }

           private function stage_keyUpHandler( event :KeyboardEvent ):void {
                 switch ( event.keyCode ) {
                       case "W".charCodeAt() :
                       case Keyboard.UP :
                             keyForward=false;
                             break;

                       case "S".charCodeAt() :
                       case Keyboard.DOWN :
                             keyReverse=false;
                             break;

                       case "A".charCodeAt() :
                       case Keyboard.LEFT :
                             keyLeft=false;
                             break;

                       case "D".charCodeAt() :
                       case Keyboard.RIGHT :
                             keyRight=false;
                             break;
                 }
           }
           //
           private function enterFrameHandler(event:Event):void {
                 if (dae) {
                       driveCar();
                       updateCar();
                 }
                 renderer.renderScene(scene,springCamera,viewport);
           }
     }
}


flash 3d 研究所 DDM君
(2009-10-27 09:55:59)
能够总结一下自己的思路吗?我们这里一般是不鼓励直接帮忙看整段代码的。希望能理解。

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

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

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

(目前需登陆方可发表)


不想添加了