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(); > } > } > }
