watch the vid/tut 
http://www.youtube.com/watch?v=VH3etYMjf94

download the app at www.closier.nl/prefab

have fun!

Fabrice



On Oct 12, 2010, at 1:57 PM, metSyS wrote:

> How to create a First Person Walker. I mean how to create something
> like this:
> http://www.infiniteturtles.co.uk/projects/away3d/demos/hacienda/BSPImportTest.html
> 
> How to make the next things:
> 1. Physic(so Like in demo - I can't walk through walls);
> 2. Jump;
> 3. Mouse watching(i've realised it in horizontal line, but can't do it
> in vertical)
> 
> here's my code:
> 
> package{
>       import away3d.cameras.*;
>       import away3d.containers.Scene3D;
>       import away3d.containers.View3D;
>       import away3d.core.math.Number3D;
>       import away3d.events.MouseEvent3D;
>       import away3d.lights.*;
>       import away3d.loaders.*;
>       import away3d.materials.*;
>       import away3d.primitives.*;
> 
>       import flash.display.Sprite;
>       import flash.events.*;
>       import flash.ui.Keyboard;
> 
>       [SWF(width="1024", height="768", frameRate="30",
> backgroundColor="0xFAFAFA")]
>       public class First_Person extends Sprite
>       {
>               private var scene:Scene3D;
>               private var cam:SpringCam;
>               private var view:View3D;
> 
>               //private var object:Cube;
>               private var Cube01:Cube;
>               private var Cylinder01:Cylinder;
>               private var Sphere01:WireSphere;
> 
>               private var lastKey:uint;
>               private var keyIsDown:Boolean=false;
>               private var mouseIsDown:Boolean;
> 
>               private var lastMouseX:Number;
>               private var lastMouseY:Number;
>               private var lastPanAngle:Number;
>               private var lastTiltAngle:Number;
> 
>               public function First_Person()
>               {
>                       scene=new Scene3D;
> 
>                       cam=new SpringCam({target:Cube01});
> 
>                       view=new View3D({scene:scene, x:stage.stageWidth/2,
> y:stage.stageHeight/2});
>                       addChild(view);
>                       view.scene.addChild(cam);
> 
>                       Cube01=new Cube({height:10, width:10, depth:10, x:0, 
> y:60, z:0});
>                       view.scene.addChild(Cube01);
> 
>                       cam.mass = 10;
>                       cam.damping = 10;
>                       cam.stiffness = 10;
>                       //cam.y = 100;
>                       //cam.z = 100;
>                       cam.target = Cube01;
>                       cam.lookAt(Cube01.position);
>                       cam.lookOffset = new Number3D(0,0,150);
>                       cam.positionOffset = new Number3D(0, 0, 50);
> 
>                       view.camera=cam;
> 
>                       var axis:Trident=new Trident(150);
>                       view.scene.addChild(axis);
> 
>                       stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDown);
>                       stage.addEventListener(KeyboardEvent.KEY_UP, keyUp);
>                       stage.addEventListener(MouseEvent.MOUSE_DOWN, 
> mouseDown);
>                       stage.addEventListener(MouseEvent.MOUSE_UP, mouseUp);
>                       addEventListener(Event.ENTER_FRAME,onEnterFrame);
>               }
> 
>               private function keyDown(e:KeyboardEvent):void
>               {
>                       lastKey = e.keyCode;
>                       keyIsDown = true;
>               }
> 
>               private function keyUp(e:KeyboardEvent):void
>               {
>                       keyIsDown = false;
>               }
> 
>               private function mouseDown(e:MouseEvent):void
>               {
>                       lastPanAngle=Cube01.rotationY;
>                       //lastTiltAngle=Cube01.rotationZ;
>                       lastMouseX=stage.mouseX;
>                       //lastMouseY=stage.mouseY;
> 
>                       mouseIsDown=true;
>               }
> 
>               private function mouseUp(e:MouseEvent):void
>               {
>                       mouseIsDown=false;
>               }
> 
>               private function onEnterFrame(e:Event):void
>               {
>                       if(keyIsDown)
>                       {
> 
>                               switch(lastKey)
>                               {
>                                       case 87                         : 
> Cube01.moveForward(10); break;
>                                       case 83                         : 
> Cube01.moveBackward(10); break;
>                                       case 65                         : 
> Cube01.moveLeft(10); break;
>                                       case 68                         : 
> Cube01.moveRight(10); break;
> 
>                                       case Keyboard.RIGHT     : 
> Cube01.yaw(2); break;
>                                       case Keyboard.LEFT      : 
> Cube01.yaw(-2); break;
>                                       case Keyboard.UP        : 
> Cube01.moveForward(10); break;
>                                       case Keyboard.DOWN      : 
> Cube01.moveBackward(10); break;
>                               }
>                       }
> 
>                       if (mouseIsDown)
>                       {
>                               
> Cube01.rotationY=((stage.mouseX-lastMouseX)*0.2) + lastPanAngle;
>                               
> //Cube01.rotationZ=((stage.mouseY-lastMouseY)*0.2) +
> lastTiltAngle;
>                       }
> 
>                       cam.view;
>                       view.render();
>               }
>       }
> }

Reply via email to