アレンジしてみた。
同じようなネタが続きます。小出しにしていけばよかったかも。
いじってたらいろいろわかってきました。
- camera.target
- カメラはx、y、zで位置を変えることができるんだけど、ターゲットの指定を変えないと思ったとおりに動いてくれなかった。
camera.target = cubeList[4];
とすればカメラが中央のCubeに向く。
あと、なんとなくTweenerの使い方がわかってきた。たのしー。
参考にさせて頂いたサイト。#鮭さんスゲー。
Papervision3Dをやってみた4: 鮭とプログラムとか
ソース。
package { import caurina.transitions.Tweener; import flash.events.Event; import flash.events.MouseEvent; import org.papervision3d.materials.ColorMaterial; import org.papervision3d.materials.utils.MaterialsList; import org.papervision3d.objects.primitives.Cube; import org.papervision3d.view.BasicView; public class Cube33 extends BasicView { private var cubeList:Array = [] private var cubeSize:Number = 100; public function Cube33() { camera.y = 800; camera.x = cubeSize; for(var i:int = 0; i < 9; i++){ var cube:Cube = createCube(cubeSize); cube.x = cubeSize * (i % 3) cube.z = cubeSize * int(i / 3) cubeList.push(cube); scene.addChild(cube); } // ターゲットを決める camera.target = cubeList[4]; addEventListener(MouseEvent.CLICK, onClick); startRendering(); } private function createCube(size:Number = 200):Cube{ var tileNames:Array = ["front", "back", "top", "bottom", "right", "left"]; var tileColors:Array = [0x0000FF, 0x00FF00, 0xFF0000, 0x00FFFF, 0xFFFF00, 0xFF00FF]; var materialsList:MaterialsList = new MaterialsList(); for(var i:int = 0; i < tileNames.length; i++){ var colorMaterial:ColorMaterial = new ColorMaterial(tileColors[i], 0.7); materialsList.addMaterial(colorMaterial, tileNames[i]); } return new Cube(materialsList, size, size, size); } override protected function onRenderTick(event:Event = null):void { super.onRenderTick(event); } private var moveSpace:Number = 200; private function onClick(evt:MouseEvent):void { for(var i:int = 0; i < cubeList.length; i++){ var moveX:Number = 0; var moveZ:Number = 0; if(i % 3 == 2){ moveX = +moveSpace; }else if(i % 3 == 0){ moveX = -moveSpace; } if(int(i / 3) == 2){ moveZ = +moveSpace; }else if(int(i / 3) == 0){ moveZ = -moveSpace; } var cube:Cube = cubeList[i]; Tweener.addTween(cube, { x:cube.x + moveX, z:cube.z + moveZ, time:1, transition:"easeOutBounce"}); Tweener.addTween(cube, { rotationX:cube.rotationX + 90, time:1, delay:1, transition:"easeOutBounce"}); Tweener.addTween(cube, { rotationY:cube.rotationY + 90, time:1, delay:2, transition:"easeOutBounce"}); Tweener.addTween(cube, { rotationZ:cube.rotationZ + -90, time:1, delay:3, transition:"easeOutBounce"}); Tweener.addTween(cube, { x:cube.x, z:cube.z, time:1, delay:4, transition:"easeOutBounce"}); } } } }