The default is set to center of the map, yet reading a bmd is allways topleft. so you define as cm.offsetX = cm.offsetX-150; or + 150 if you have a your Plane in negative x; The way you have define now, works, but the readings are made in world x/z positive quadrant only.
its confusing but very simple. Try think from top of your scene that the -x and -z of your sceneobjects bounds are the top left on the map, the x and z of the object must be the downright. if your map is smaller than the object bounds units just define the factorX and Y in ratio. Fabrice On Jul 13, 2010, at 8:43 AM, le_unam wrote: > ehm okay, now there is another small problem ... the collisionmap is > at the wrong position. Is there a way to change it? i tried offset but > i dont know how offset works. i placed a plane with the texture off my > collisionmap withouth setting any x and z values. so its equal to the > collisionmap and works fine, but if i set the plane.x = 150 and > collisionmap.offsetX = 150 its not the same ... why? can anybody > explain what offset does? thank you = ) > > On 12 Jul., 11:02, le_unam <[email protected]> wrote: >> hey fabrice ... thank you sooo much. The getcolor information did >> help. the problem was that my "red" in the picture was compressed from >> #ff0000 to #fe0000. Dont know why but its okay ... now it works >> great .... big big thanks :-* >> >> On 9 Jul., 17:54, Fabrice3D <[email protected]> wrote: >> >>> because uv's are 1 where in flash they'll be 0 >>> and one where you would expect a height value >> >>> then, this is important make sure the color you test on IS the color you >>> think it is... >> >>> make a test at a position on the map you know its say "yellow" >>> check the reading value and the one you entered for the event. >>> due to compression algo's if you use a bitmap color might change >> >>> fix is to draw with vector movieclips, and draw this movieclip into bitmap >>> runtime. >> >>> again, to test addchild your map above, and plot the readings and trace the >>> colors to see if correct >>> the class as a special test call for this purpose --> doc >> >>> Fabrice >> >>> On Jul 9, 2010, at 4:46 PM, le_unam wrote: >> >>>> okay ehm the x and z values seem to be correct. on startup it is 0, 0 >>>> when i move forward it counts ... -20 -40 -60 -80 -100 .... and so on. >>>> but why should is use -z? whats the matter with the -? can u please >>>> explain it to me? >>>> what about the offset position of the map? where is the startpoint? >>>> lower left corner = 0, 0 ? >> >>>> On 9 Jul., 16:06, le_unam <[email protected]> wrote: >>>>> hey thanks for your answer ... i will try this ... the scale ratio 1,1 >>>>> is because my plane is width:1000, height:1000 and my map is width: >>>>> 1000, height:1000 too. >>>>> maybe there is an offset problem or something like this. thanks >> >>>>> On 9 Jul., 15:10, Fabrice3D <[email protected]> wrote: >> >>>>>> you have a scale ratio 1, 1 passed to class >> >>>>>> trace your x and -z when you ask the "read" >>>>>> they are probably exceeded the bounds of your map. >> >>>>>> try attach on top of your scene this map or a duplicate, and setPixel at >>>>>> this coords... >>>>>> i bet you are way off. >> >>>>>> Fabrice >> >>>>>> On Jul 9, 2010, at 2:00 PM, le_unam wrote: >> >>>>>>> hey fabrice okay now there are no more errors ... it was an syntax >>>>>>> problem. But the collisionmap isnt still working. nothing happens when >>>>>>> walkingover the "red" area = ( >>>>>>> where can be the mistake? the y position of the cube doesnt matter >>>>>>> right? >>>>>>> what about the offset position of the map? ist it necessary to set it? >> >>>>>>> best regards >> >>>>>>> On 9 Jul., 11:33, le_unam <[email protected]> wrote: >>>>>>>> hey fabrice thank you ... well i tried to make an easy example for >>>>>>>> collision map. i created a cube, which is followed by the camera and a >>>>>>>> plane with the texture of the collisionmap for easy understanding. but >>>>>>>> i still get an error ... maybe you can check my code for syntax >>>>>>>> problems. it would be very nice. >> >>>>>>>> code -------------------------------------------------------------- >> >>>>>>>> package >>>>>>>> { >>>>>>>> import away3d.cameras.SpringCam; >>>>>>>> import away3d.containers.*; >>>>>>>> import away3d.core.base.Object3D; >>>>>>>> import away3d.core.clip.FrustumClipping; >>>>>>>> import away3d.core.math.Number3D; >>>>>>>> import away3d.core.render.Renderer; >>>>>>>> import away3d.core.utils.Cast; >>>>>>>> import away3d.extrusions.CollisionMap; >>>>>>>> import away3d.materials.*; >>>>>>>> import away3d.primitives.*; >> >>>>>>>> import flash.display.DisplayObjectContainer; >>>>>>>> import flash.display.BitmapData; >>>>>>>> import flash.display.MovieClip; >>>>>>>> import flash.events.Event; >>>>>>>> import flash.events.KeyboardEvent; >>>>>>>> import flash.ui.Keyboard; >> >>>>>>>> [SWF(width="800", height="600", frameRate="30", quality="LOW", >>>>>>>> backgroundColor="0xFFFFFF")] >>>>>>>> public class colltest extends MovieClip >>>>>>>> { >>>>>>>> private var myScene:Scene3D; >>>>>>>> private var myCamera:SpringCam; >>>>>>>> private var myClipping:FrustumClipping; >>>>>>>> private var myCube:Cube; >>>>>>>> private var myView:View3D; >>>>>>>> private var myCollision:BitmapData; >>>>>>>> private var myCollisonmap:CollisionMap; >> >>>>>>>> private var keyIsDown:Boolean = false; >>>>>>>> private var keyHandler:Number = 0; >> >>>>>>>> private var myBoden:Plane; >> >>>>>>>> public function colltest() >>>>>>>> { >>>>>>>> initEngine(); >>>>>>>> initObjects(); >>>>>>>> initEventListeners(); >>>>>>>> } >> >>>>>>>> public function initEngine() >>>>>>>> { >>>>>>>> myScene = new Scene3D; >>>>>>>> myCamera = new SpringCam; >>>>>>>> myClipping = new >>>>>>>> FrustumClipping; >> >>>>>>>> myView = new View3D( { >>>>>>>> scene:myScene, camera:myCamera, >>>>>>>> clipping:myClipping, renderer:Renderer.CORRECT_Z_ORDER, >>>>>>>> x:stage.stageWidth / 2, y:stage.stageHeight / 2 } ); >>>>>>>> addChild(myView); >> >>>>>>>> myScene.addChild(myCamera); >> >>>>>>>> myCube = new Cube( { width:1, >>>>>>>> height:1, depth:1 } ); >>>>>>>> myScene.addChild(myCube); >> >>>>>>>> myCamera.zoom = 10; >>>>>>>> myCamera.focus = 100; >>>>>>>> myCamera.mass = 10; >>>>>>>> myCamera.damping = 10; >>>>>>>> myCamera.stiffness = 10; >>>>>>>> myCamera.target = myCube; >>>>>>>> >>>>>>>> myCamera.lookAt(myCube.position); >>>>>>>> myCamera.lookOffset = new Number3D(0, 0, 100); >>>>>>>> myCamera.positionOffset = new Number3D(0, 0, 50); >> >>>>>>>> myCollision = new >>>>>>>> BitmapData(Cast.bitmap(cmap)); >>>>>>>> myCollisionmap = new >>>>>>>> CollisionMap(myCollision, 1, 1); >>>>>>>> >>>>>>>> myCollisionmap.setColorEvent(0xFF0000, "red", onCollision); >> >>>>>>>> myView.render(); >>>>>>>> } >> >>>>>>>> public function initObjects() >>>>>>>> { >>>>>>>> var myMaterial:BitmapMaterial >>>>>>>> = new >>>>>>>> BitmapMaterial(Cast.bitmap(cmap)); >>>>>>>> myBoden = new Plane ( { >>>>>>>> material:myMaterial, width:1000, height: >>>>>>>> 1000, y: -stage.stageWidth / 2 } ); >>>>>>>> myScene.addChild(myBoden); >>>>>>>> } >> >>>>>>>> public function onCollision() >>>>>>>> { >>>>>>>> trace("berührt"); >>>>>>>> } >> >>>>>>>> public function initEventListeners() >>>>>>>> { >>>>>>>> >>>>>>>> addEventListener(Event.ENTER_FRAME, initEnterFrame); >>>>>>>> >>>>>>>> stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDown); >>>>>>>> >>>>>>>> stage.addEventListener(KeyboardEvent.KEY_UP, keyUp); >>>>>>>> } >> >>>>>>>> public function keyDown(e:KeyboardEvent):void >>>>>>>> { >>>>>>>> keyIsDown = true; >>>>>>>> keyHandler = e.keyCode; >>>>>>>> } >> >>>>>>>> public function keyUp(e:KeyboardEvent):void >>>>>>>> { >>>>>>>> keyIsDown = false; >>>>>>>> } >> >>>>>>>> public function initEnterFrame(e:Event):void >>>>>>>> { >>>>>>>> if >> >> ... >> >> Erfahren Sie mehr »
