Hi! Can you try:
model.pushback=true if that doesn't work, also try: model.ownCanvas=true; if that doesn't work, also try: model.ownCanvas=true; model.pushback=true Let me know if it helps. -Pete On Fri, Oct 23, 2009 at 2:23 PM, astropajo <[email protected]> wrote: > > Hello everyone! and sorry for my english. > > I'm working in an educational game board. I have a problem because my > character is seen through the walls in some areas. > > Here, I have a video: > > > http://away3d-dev.googlegroups.com/web/maze.avi?gda=jSeorToAAAD3NXDUDW5Slry6IVUku4OExC93VWMy3KH2VaOd0597yuFRVVXtXwVsR2O6z1LrPdv97daDQaep90o7AOpSKHW0&gsc=Z-skmgsAAABjdsjIMoqOOfcx-XEqLs01 > > And this is the code: > > public class Laberinto extends Sprite { > private var shadow:Plane; > public var sceneplane:Scene3D; > private var plane:Object3D; > private var group:ObjectContainer3D; > public var scene:Scene3D; > private var zero:Number3D; > protected var view:View3D; > private var pared:Array = new Array(); > private var anchoPared:uint=50; > > private var pathanimator:PathAnimator; > private var material:BitmapMaterial; > private var md2:Md2; > private var loader:LoaderCube; > private var model:Mesh; > private var momento:Number = 0; > > private var sign:Sprite; > protected var viewplane:View3D; > > public function Laberinto() { > zero=new Number3D(0,0,0); > this.initSWFEnvironement(); > this.prepareWorld(); > this.showSignature(); > return; > }// end function > > private function refreshScreen(param1:Event):void { > var event:* =param1; > try { > this.view.render(); > this.view.scene.updateTime(); > this.viewplane.render(); > }// end try > catch (e:Error) { > trace("render error" + e.message); > }// end catch > return; > }// end function > > private function showSignature():void { > this.sign = new signature(); > this.addChild(sign); > this.sign.y=stage.stageHeight-sign.height; > return; > }// end function > > private function onResize(param1:Event):void { > this.view.x=stage.stageWidth*0.5; > this.view.y=stage.stageHeight*0.5; > this.viewplane.x=stage.stageWidth*0.5; > this.viewplane.y=stage.stageHeight*0.5; > this.sign.y=stage.stageHeight-sign.height; > return; > }// end function > > private function generateFromLib > (param1:String):BitmapData { > var claseTemp:Class; > var sprite:Sprite; > var mapaBits:BitmapData; > claseTemp=getDefinitionByName(param1) as > Class; > sprite=new claseTemp ; > mapaBits=new BitmapData > (sprite.width,sprite.height,true,16777215); > mapaBits.draw(sprite, null, null, null, > mapaBits.rect, true); > return mapaBits; > }// end function > > private function initSWFEnvironement():void { > stage.align=StageAlign.TOP_LEFT; > stage.scaleMode=StageScaleMode.NO_SCALE; > stage.showDefaultContextMenu=true; > stage.stageFocusRect=false; > stage.quality="medium"; > return; > }// end function > > private function imageFromLib > (param1:String):BitmapData { > var claseTemp:Class; > claseTemp=getDefinitionByName(param1) as > Class; > return new claseTemp(claseTemp.width, > claseTemp.height); > }// end function > > private function prepareWorld():void { > > var puntosPared:Array = new Array (); > var punstosCamino:Array = new Array (); > > var suelo:IMaterial; > var paredRight:IMaterial; > var paredLeft:IMaterial; > var paredFront:IMaterial; > var paredBack:IMaterial; > var paredTop:IMaterial; > var paredBottom:IMaterial; > > var sombra:*; > this.scene = new Scene3D(); > this.sceneplane = new Scene3D(); > > puntosPared[0]=["v", 10, -1875, -1875, -1875, > 1875]; > puntosPared[1]=["v", 10, 1875, -1875, 1875, > 1875]; > puntosPared[2]=["v", 8, -1500, -1500, -1500, > 1500]; > puntosPared[3]=["v", 8, 1500, -1500, 1500, > 1500]; > puntosPared[4]=["v", 4, -750, -750, -750, > 750]; > puntosPared[5]=["v", 4, 750, -750, 750, 750]; > puntosPared[6]=["v", 3, 0, 750, 0, 1875]; > puntosPared[7]=["v", 2, -1125, -1125, -1125, > -375]; > puntosPared[8]=["v", 2, -1125, 375, -1125, > 1125]; > puntosPared[9]=["v", 2, 0, -1875, 0, -1125]; > puntosPared[10]=["v", 2, 375, 1125, 375, > 1875]; > puntosPared[11]=["v", 2, 1125, -1125, 1125, > -375]; > puntosPared[12]=["v", 2, 1125, 375, 1125, > 1125]; > puntosPared[13]=["h", 10, -1875, -1875, 1875, > -1875]; > puntosPared[14]=["h", 5, -1875, 1875, 0, > 1875]; > puntosPared[15]=["h", 4, -750, -750, 750, > -750]; > puntosPared[16]=["h", 4, 375, 1875, 1875, > 1875]; > puntosPared[17]=["h", 3, -1500, -1500, -375, > -1500]; > puntosPared[18]=["h", 3, 375, -1500, 1500, > -1500]; > puntosPared[19]=["h", 3, -1125, -1125, 0, > -1125]; > puntosPared[20]=["h", 3, 0, -1125, 1125, > -1125]; > puntosPared[21]=["h", 3, -1125, 1125, 0, > 1125]; > puntosPared[22]=["h", 3, -1500, 1500, -375, > 1500]; > puntosPared[23]=["h", 2, -1500, 0, -750, 0]; > puntosPared[24]=["h", 2, 750, 0, 1500, 0]; > puntosPared[25]=["h", 2, 0, 750, 750, 750]; > puntosPared[26]=["h", 2, 375, 1125, 1125, > 1125]; > puntosPared[27]=["h", 2, 750, 1500, 1500, > 1500]; > puntosPared[28]=["h", 1, -750, 750, -375, > 750]; > > suelo=new BitmapMaterial(this.generateFromLib > ("woodplank"), > {smooth:false}); > paredRight=new BitmapMaterial > (this.generateFromLib("muro"), > {smooth:false}); > paredLeft=new BitmapMaterial > (this.generateFromLib("muro"), > {smooth:false}); > paredFront=new BitmapMaterial > (this.generateFromLib("muro"), > {smooth:false}); > paredBack=new BitmapMaterial > (this.generateFromLib("muro"), > {smooth:false}); > paredTop=new BitmapMaterial > (this.generateFromLib("top"), > {smooth:false}); > paredBottom=new BitmapMaterial > (this.generateFromLib("bottom"), > {smooth:false}); > > var materialParedes:Object= > > {front:paredFront,back:paredBack,left:paredLeft,right:paredRight,top:paredTop,bottom:paredBottom,defaultmaterial:suelo}; > var segmentoTemp:Array = new Array (); > > for (var indice:uint = 0; indice < > puntosPared.length; indice++) { > segmentoTemp = [new Number3D > (puntosPared[indice][2],0,puntosPared > [indice][3]),new Number3D(puntosPared[indice][4],0,puntosPared[indice] > [5])] > pared[indice]=new SegmentsExtrude > (segmentoTemp,{axis:"y",offset: > 500,subdivision:1,thickness:anchoPared,thickness_subdivision: > 1,flip:false,scaling: > > 1,materials:materialParedes,omit:"top",coverall:false,recenter:true,closepath:false}); > this.scene.addChild(pared[indice]); > pared[indice].rotationX=180; > } > > this.viewplane=new View3D > ({scene:this.sceneplane,renderer:Renderer.BASIC}); > this.viewplane.x=stage.stageWidth/2; > this.viewplane.y=stage.stageHeight/2; > this.viewplane.camera.x=0; > this.viewplane.camera.y=3000; > this.viewplane.camera.z=-500; > this.view=new View3D > ({scene:this.scene,renderer:Renderer.BASIC}); > this.view.x=stage.stageWidth/2; > this.view.y=stage.stageHeight/2; > this.view.camera.x=0; > this.view.camera.y=3000; > this.view.camera.z=-500; > this.plane=new Plane({material:suelo,segmentsW: > 4,segmentsH:4,width: > 4000,height:4000,bothsides:true}); > this.sceneplane.addChild(this.plane); > > material=new BitmapMaterial(Cast.bitmap > (MimiTexture)); > md2 = new Md2(); > md2.material=material; > md2.scaling=15; > loader = new LoaderCube(); > loader.loadersize=100; > loader.loadGeometry("mimicorre2.md2", md2); > > loader.addEventListener > (Loader3DEvent.LOAD_SUCCESS, onSuccess); > > this.scene.addChild(this.loader); > > this.view.camera.lookAt(this.loader.position); > this.viewplane.camera.lookAt > (this.loader.position); > this.addChild(this.viewplane); > this.addChild(this.view); > > stage.addEventListener(Event.ENTER_FRAME, > this.refreshScreen); > stage.addEventListener(Event.RESIZE, > this.onResize); > return; > }// end function > > private function onSuccess(event:Loader3DEvent):void { > var puntosCamino:Array = new Array(); > var vectorCamino:Array = new Array(); > > puntosCamino[0]=[0, 0, 0]; > puntosCamino[1]=[2.5, -187.5, 937.5]; > puntosCamino[2]=[1.5, -750, 937.5]; > puntosCamino[3]=[0.5, -937.5, 750]; > puntosCamino[4]=[1, -937.5, 375]; > puntosCamino[5]=[0.5, -1125, 187.5]; > puntosCamino[6]=[0.5, -1312.5, 375]; > puntosCamino[7]=[2, -1312.5, 1125]; > > for (var indice:uint = 0; indice < > puntosCamino.length-1; indice++) > { > vectorCamino.push(new Number3D > (puntosCamino[indice][1], 0, > puntosCamino[indice][2]), new Number3D((puntosCamino[indice] > [1]+puntosCamino[indice+1][1])/2, 0, (puntosCamino[indice] > [2]+puntosCamino[indice+1][2])/2), new Number3D(puntosCamino[indice+1] > [1], 0, puntosCamino[indice+1][2])); > }; > > var path:Path = new Path (vectorCamino); > > var init:Object = {duration:5000, lookat:null, > aligntopath:true, > targetobject:null, offset:new Number3D(0,200,0), rotations:null, fps: > 24, easein:false, easeout:false}; > > model = loader.handle as Mesh; > model.scale(1); > > model.play(new AnimationSequence("corre", > true, true, 10)); > > this.pathanimator = new PathAnimator(path, > model, init); > > var time:Timer = new Timer (100, 100); > time.addEventListener(TimerEvent.TIMER, > movimiento); > time.start(); > > return; > }// end function > > private function movimiento (e:TimerEvent) { > momento = momento + 0.01; > trace(momento); > this.pathanimator.update (momento); > this.view.camera.lookAt > (this.pathanimator.position); > this.viewplane.camera.lookAt > (this.pathanimator.position); > } > > } > > } > > > Thanks for your help -- ___________________ Actionscript 3.0 Flash 3D Graphics Engine HTTP://AWAY3D.COM
