※現在、「wonderfl build flash online」求人コンテンツ制作に関してのアンケートを実施中です!みなさまのお力添えを頂いて、続々とアンケート結果が集まっていますが、まだまだ募集しております。ご協力のほど、どうぞよろしくお願いいたします!
wonderfl運営事務局
→アンケートページ(※ログインしてからお答えいただけるようになっています。)
[Alternativa3D] Maze forked from: [Alternativa3D] Maze
- // forked from clockmaker's [Alternativa3D] Maze
- /**
- * Alternativa3D Maze Demo
- * W,S,A,D+Spaceで移動
- * ドラッグで方向回転
- * 参考: http://clockmaker.jp/blog/2008/10/alternativa3d_walkcontroller/
- */
- package
- {
- import alternativa.engine3d.controllers.*;
- import alternativa.engine3d.core.*;
- import alternativa.engine3d.display.*;
- import alternativa.engine3d.materials.*;
- import alternativa.engine3d.primitives.*;
- import alternativa.types.*;
- import alternativa.utils.*;
- import flash.net.*;
- import flash.display.*;
- import flash.events.*;
- import flash.geom.*;
- [SWF(frameRate="60")]
- public class Main extends Sprite
- {
- private const WIDTH_NUM:int = 10;
- private const HEIGHT_NUM:int = 10;
- private const LINE_SIZE:int = 500;
- private const MAZE_ARR:Array =
- [
- [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
- [1, 0, 1, 0, 0, 1, 0, 0, 0, 1],
- [1, 0, 1, 0, 0, 1, 0, 0, 0, 1],
- [1, 0, 1, 1, 0, 1, 0, 1, 1, 1],
- [1, 0, 0, 0, 0, 0, 0, 1, 0, 1],
- [1, 0, 0, 0, 1, 0, 0, 1, 0, 1],
- [1, 0, 1, 0, 0, 0, 0, 0, 0, 1],
- [1, 0, 1, 0, 1, 1, 1, 1, 0, 1],
- [1, 0, 1, 0, 0, 0, 0, 0, 0, 1],
- [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
- ]
- private var scene:Scene3D;
- private var view:View;
- private var camera:Camera3D;
- // The camera controller
- private var controller:WalkController;
- public function Main()
- {
- stage.scaleMode = StageScaleMode.NO_SCALE;
- stage.align = StageAlign.TOP_LEFT;
- // Creating scene
- scene = new Scene3D();
- scene.root = new Object3D();
- // create box
- for (var i:int = 0; i < MAZE_ARR.length; i++ )
- {
- for (var j:int = 0; j < MAZE_ARR[i].length; j++ )
- {
- if (MAZE_ARR[i][j] == 0) continue;
- var box:Box = Box(scene.root.addChild(new Box(LINE_SIZE, LINE_SIZE, LINE_SIZE)));
- box.cloneMaterialToAllSurfaces(new DevMaterial(0,0xFF4422));
- box.x = LINE_SIZE * (i - WIDTH_NUM / 2);
- box.y = LINE_SIZE * (j - HEIGHT_NUM / 2);
- }
- }
- var plane:Plane = Plane(scene.root.addChild(new Plane(LINE_SIZE * MAZE_ARR.length, LINE_SIZE * MAZE_ARR.length)));
- plane.cloneMaterialToAllSurfaces(new FillMaterial(0x221100));
- plane.z = -LINE_SIZE / 2;
- plane.rotationX = 0 * Math.PI / 180;
- // Adding camera and view
- camera = new Camera3D();
- camera.rotationX = MathUtils.toRadian(-90)
- camera.rotationZ = MathUtils.toRadian(120)
- scene.root.addChild(camera);
- view = new View();
- addChild(view);
- view.camera = camera;
- // 徒歩のコントローラーを作成
- controller = new WalkController(stage);
- // キーボード操作を可能にする機能
- controller.setDefaultBindings();
- // キーボードショートカットの整理
- controller.bindKey(KeyboardUtils.UP, ObjectController.ACTION_FORWARD);
- controller.bindKey(KeyboardUtils.DOWN, ObjectController.ACTION_BACK);
- controller.bindKey(KeyboardUtils.LEFT, ObjectController.ACTION_LEFT);
- controller.bindKey(KeyboardUtils.RIGHT, ObjectController.ACTION_RIGHT);
- // WalkControllerの対象を設定
- controller.object = camera;
- // 障害物の衝突設定
- controller.checkCollisions = true;
- // 徒歩の速度
- controller.speed = 500;
- // ジャンプ(スペースでジャンプできます)の速度
- controller.jumpSpeed = 750;
- // 重力の速度
- controller.gravity = 600;
- // 視点(制御点)の高さ
- controller.objectZPosition = 2;
- // FPS display launch
- FPS.init(stage);
- stage.addEventListener(Event.RESIZE, onResize);
- stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
- onResize(null);
- }
- private function onEnterFrame(e:Event):void
- {
- // interface
- controller.processInput();
- // Scene calculating
- scene.calculate();
- }
- /**
- * Resize Handler
- */
- private function onResize(e:Event):void
- {
- view.width = stage.stageWidth;
- view.height = stage.stageHeight;
- // BackGround Color
- var bgMatrix:Matrix = new Matrix();
- bgMatrix.rotate(90 * Math.PI / 180);
- graphics.clear()
- graphics.beginGradientFill("linear", [0xFFFFFF, 0x001122], [100, 100], [0, 255], bgMatrix);
- graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
- }
- }
- }
[Alternativa3D] Maze forked from: [Alternativa3D] Maze
- // forked from clockmaker's [Alternativa3D] Maze
- /**
- * Alternativa3D Maze Demo
- * W,S,A,D+Spaceで移動
- * ドラッグで方向回転
- * 参考: http://clockmaker.jp/blog/2008/10/alternativa3d_walkcontroller/
- */
- package
- {
- import alternativa.engine3d.controllers.*;
- import alternativa.engine3d.core.*;
- import alternativa.engine3d.display.*;
- import alternativa.engine3d.materials.*;
- import alternativa.engine3d.primitives.*;
- import alternativa.types.*;
- import alternativa.utils.*;
- import flash.net.*;
- import flash.display.*;
- import flash.events.*;
- import flash.geom.*;
- [SWF(frameRate="60")]
- public class Main extends Sprite
- {
- private const WIDTH_NUM:int = 10;
- private const HEIGHT_NUM:int = 10;
- private const LINE_SIZE:int = 500;
- private const MAZE_ARR:Array =
- [
- [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
- [1, 0, 1, 0, 0, 1, 0, 0, 0, 1],
- [1, 0, 1, 0, 0, 1, 0, 0, 0, 1],
- [1, 0, 1, 1, 0, 1, 0, 1, 1, 1],
- [1, 0, 0, 0, 0, 0, 0, 1, 0, 1],
- [1, 0, 0, 0, 1, 0, 0, 1, 0, 1],
- [1, 0, 1, 0, 0, 0, 0, 0, 0, 1],
- [1, 0, 1, 0, 1, 1, 1, 1, 0, 1],
- [1, 0, 1, 0, 0, 0, 0, 0, 0, 1],
- [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
- ]
- private var scene:Scene3D;
- private var view:View;
- private var camera:Camera3D;
- // The camera controller
- private var controller:WalkController;
- public function Main()
- {
- stage.scaleMode = StageScaleMode.NO_SCALE;
- stage.align = StageAlign.TOP_LEFT;
- // Creating scene
- scene = new Scene3D();
- scene.root = new Object3D();
- // create box
- for (var i:int = 0; i < MAZE_ARR.length; i++ )
- {
- for (var j:int = 0; j < MAZE_ARR[i].length; j++ )
- {
- if (MAZE_ARR[i][j] == 0) continue;
- var box:Box = Box(scene.root.addChild(new Box(LINE_SIZE, LINE_SIZE, LINE_SIZE)));
- box.cloneMaterialToAllSurfaces(new DevMaterial(0,0xFF4422));
- box.x = LINE_SIZE * (i - WIDTH_NUM / 2);
- box.y = LINE_SIZE * (j - HEIGHT_NUM / 2);
- }
- }
- var plane:Plane = Plane(scene.root.addChild(new Plane(LINE_SIZE * MAZE_ARR.length, LINE_SIZE * MAZE_ARR.length)));
- plane.cloneMaterialToAllSurfaces(new FillMaterial(0x221100));
- plane.z = -LINE_SIZE / 2;
- plane.rotationX = 0 * Math.PI / 180;
- // Adding camera and view
- camera = new Camera3D();
- camera.rotationX = MathUtils.toRadian(-90)
- camera.rotationZ = MathUtils.toRadian(120)
- scene.root.addChild(camera);
- view = new View();
- addChild(view);
- view.camera = camera;
- // 徒歩のコントローラーを作成
- controller = new WalkController(stage);
- // キーボード操作を可能にする機能
- controller.setDefaultBindings();
- // キーボードショートカットの整理
- controller.bindKey(KeyboardUtils.UP, ObjectController.ACTION_FORWARD);
- controller.bindKey(KeyboardUtils.DOWN, ObjectController.ACTION_BACK);
- controller.bindKey(KeyboardUtils.LEFT, ObjectController.ACTION_LEFT);
- controller.bindKey(KeyboardUtils.RIGHT, ObjectController.ACTION_RIGHT);
- // WalkControllerの対象を設定
- controller.object = camera;
- // 障害物の衝突設定
- controller.checkCollisions = true;
- // 徒歩の速度
- controller.speed = 500;
- // ジャンプ(スペースでジャンプできます)の速度
- controller.jumpSpeed = 750;
- // 重力の速度
- controller.gravity = 600;
- // 視点(制御点)の高さ
- controller.objectZPosition = 2;
- // FPS display launch
- FPS.init(stage);
- stage.addEventListener(Event.RESIZE, onResize);
- stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
- onResize(null);
- }
- private function onEnterFrame(e:Event):void
- {
- // interface
- controller.processInput();
- // Scene calculating
- scene.calculate();
- }
- /**
- * Resize Handler
- */
- private function onResize(e:Event):void
- {
- view.width = stage.stageWidth;
- view.height = stage.stageHeight;
- // BackGround Color
- var bgMatrix:Matrix = new Matrix();
- bgMatrix.rotate(90 * Math.PI / 180);
- graphics.clear()
- graphics.beginGradientFill("linear", [0xFFFFFF, 0x001122], [100, 100], [0, 255], bgMatrix);
- graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
- }
- }
- }
[Alternativa3D] Maze forked from: [Alternativa3D] Maze
- // forked from clockmaker's [Alternativa3D] Maze
- /**
- * Alternativa3D Maze Demo
- * W,S,A,D+Spaceで移動
- * ドラッグで方向回転
- * 参考: http://clockmaker.jp/blog/2008/10/alternativa3d_walkcontroller/
- */
- package
- {
- import alternativa.engine3d.controllers.*;
- import alternativa.engine3d.core.*;
- import alternativa.engine3d.display.*;
- import alternativa.engine3d.materials.*;
- import alternativa.engine3d.primitives.*;
- import alternativa.types.*;
- import alternativa.utils.*;
- import flash.net.*;
- import flash.display.*;
- import flash.events.*;
- import flash.geom.*;
- [SWF(frameRate="60")]
- public class Main extends Sprite
- {
- private const WIDTH_NUM:int = 10;
- private const HEIGHT_NUM:int = 10;
- private const LINE_SIZE:int = 500;
- private const MAZE_ARR:Array =
- [
- [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
- [1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
- [1, 0, 1, 0, 0, 1, 0, 0, 0, 1],
- [1, 0, 1, 1, 0, 1, 0, 1, 1, 1],
- [1, 0, 0, 0, 0, 0, 0, 1, 0, 1],
- [1, 0, 0, 0, 1, 0, 0, 1, 0, 1],
- [1, 0, 1, 0, 0, 0, 0, 0, 0, 1],
- [1, 0, 1, 0, 1, 1, 1, 1, 0, 1],
- [1, 0, 1, 0, 0, 0, 0, 0, 0, 1],
- [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
- ]
- private var scene:Scene3D;
- private var view:View;
- private var camera:Camera3D;
- // The camera controller
- private var controller:WalkController;
- public function Main()
- {
- stage.scaleMode = StageScaleMode.NO_SCALE;
- stage.align = StageAlign.TOP_LEFT;
- // Creating scene
- scene = new Scene3D();
- scene.root = new Object3D();
- // create box
- for (var i:int = 0; i < MAZE_ARR.length; i++ )
- {
- for (var j:int = 0; j < MAZE_ARR[i].length; j++ )
- {
- if (MAZE_ARR[i][j] == 0) continue;
- var box:Box = Box(scene.root.addChild(new Box(LINE_SIZE, LINE_SIZE, LINE_SIZE)));
- box.cloneMaterialToAllSurfaces(new DevMaterial(0,0xFF4422));
- box.x = LINE_SIZE * (i - WIDTH_NUM / 2);
- box.y = LINE_SIZE * (j - HEIGHT_NUM / 2);
- }
- }
- var plane:Plane = Plane(scene.root.addChild(new Plane(LINE_SIZE * MAZE_ARR.length, LINE_SIZE * MAZE_ARR.length)));
- plane.cloneMaterialToAllSurfaces(new FillMaterial(0x221100));
- plane.z = -LINE_SIZE / 2;
- plane.rotationX = 0 * Math.PI / 180;
- // Adding camera and view
- camera = new Camera3D();
- camera.rotationX = MathUtils.toRadian(-90)
- camera.rotationZ = MathUtils.toRadian(120)
- scene.root.addChild(camera);
- view = new View();
- addChild(view);
- view.camera = camera;
- // 徒歩のコントローラーを作成
- controller = new WalkController(stage);
- // キーボード操作を可能にする機能
- controller.setDefaultBindings();
- // キーボードショートカットの整理
- controller.bindKey(KeyboardUtils.UP, ObjectController.ACTION_FORWARD);
- controller.bindKey(KeyboardUtils.DOWN, ObjectController.ACTION_BACK);
- controller.bindKey(KeyboardUtils.LEFT, ObjectController.ACTION_LEFT);
- controller.bindKey(KeyboardUtils.RIGHT, ObjectController.ACTION_RIGHT);
- // WalkControllerの対象を設定
- controller.object = camera;
- // 障害物の衝突設定
- controller.checkCollisions = true;
- // 徒歩の速度
- controller.speed = 500;
- // ジャンプ(スペースでジャンプできます)の速度
- controller.jumpSpeed = 750;
- // 重力の速度
- controller.gravity = 600;
- // 視点(制御点)の高さ
- controller.objectZPosition = 2;
- // FPS display launch
- FPS.init(stage);
- stage.addEventListener(Event.RESIZE, onResize);
- stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
- onResize(null);
- }
- private function onEnterFrame(e:Event):void
- {
- // interface
- controller.processInput();
- // Scene calculating
- scene.calculate();
- }
- /**
- * Resize Handler
- */
- private function onResize(e:Event):void
- {
- view.width = stage.stageWidth;
- view.height = stage.stageHeight;
- // BackGround Color
- var bgMatrix:Matrix = new Matrix();
- bgMatrix.rotate(90 * Math.PI / 180);
- graphics.clear()
- graphics.beginGradientFill("linear", [0xFFFFFF, 0x001122], [100, 100], [0, 255], bgMatrix);
- graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
- }
- }
- }
[Alternativa3D] Maze forked from: [Alternativa3D] Maze
- // forked from clockmaker's [Alternativa3D] Maze
- /**
- * Alternativa3D Maze Demo
- * W,S,A,D+Spaceで移動
- * ドラッグで方向回転
- * 参考: http://clockmaker.jp/blog/2008/10/alternativa3d_walkcontroller/
- */
- package
- {
- import alternativa.engine3d.controllers.*;
- import alternativa.engine3d.core.*;
- import alternativa.engine3d.display.*;
- import alternativa.engine3d.materials.*;
- import alternativa.engine3d.primitives.*;
- import alternativa.types.*;
- import alternativa.utils.*;
- import flash.net.*;
- import flash.display.*;
- import flash.events.*;
- import flash.geom.*;
- [SWF(frameRate="60")]
- public class Main extends Sprite
- {
- private const WIDTH_NUM:int = 10;
- private const HEIGHT_NUM:int = 10;
- private const LINE_SIZE:int = 500;
- private const MAZE_ARR:Array =
- [
- [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
- [1, 0, 1, 0, 0, 1, 0, 0, 0, 1],
- [1, 0, 1, 0, 0, 1, 0, 0, 0, 1],
- [1, 0, 1, 1, 0, 1, 0, 1, 1, 1],
- [1, 0, 0, 0, 0, 0, 0, 1, 0, 1],
- [1, 0, 0, 0, 1, 0, 0, 1, 0, 1],
- [1, 0, 1, 0, 0, 0, 0, 0, 0, 1],
- [1, 0, 1, 0, 1, 1, 1, 1, 0, 1],
- [1, 0, 1, 0, 0, 0, 0, 0, 0, 1],
- [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
- [1, 1, 0, 1, 1, 1, 1, 1, 1, 1]
- ]
- private var scene:Scene3D;
- private var view:View;
- private var camera:Camera3D;
- // The camera controller
- private var controller:WalkController;
- public function Main()
- {
- stage.scaleMode = StageScaleMode.NO_SCALE;
- stage.align = StageAlign.TOP_LEFT;
- // Creating scene
- scene = new Scene3D();
- scene.root = new Object3D();
- // create box
- for (var i:int = 0; i < MAZE_ARR.length; i++ )
- {
- for (var j:int = 0; j < MAZE_ARR[i].length; j++ )
- {
- if (MAZE_ARR[i][j] == 0) continue;
- var box:Box = Box(scene.root.addChild(new Box(LINE_SIZE, LINE_SIZE, LINE_SIZE)));
- box.cloneMaterialToAllSurfaces(new DevMaterial(0,0xFF4422));
- box.x = LINE_SIZE * (i - WIDTH_NUM / 2);
- box.y = LINE_SIZE * (j - HEIGHT_NUM / 2);
- }
- }
- var plane:Plane = Plane(scene.root.addChild(new Plane(LINE_SIZE * MAZE_ARR.length, LINE_SIZE * MAZE_ARR.length)));
- plane.cloneMaterialToAllSurfaces(new FillMaterial(0x221100));
- plane.z = -LINE_SIZE / 2;
- plane.rotationX = 0 * Math.PI / 180;
- // Adding camera and view
- camera = new Camera3D();
- camera.rotationX = MathUtils.toRadian(-90)
- camera.rotationZ = MathUtils.toRadian(120)
- scene.root.addChild(camera);
- view = new View();
- addChild(view);
- view.camera = camera;
- // 徒歩のコントローラーを作成
- controller = new WalkController(stage);
- // キーボード操作を可能にする機能
- controller.setDefaultBindings();
- // キーボードショートカットの整理
- controller.bindKey(KeyboardUtils.UP, ObjectController.ACTION_FORWARD);
- controller.bindKey(KeyboardUtils.DOWN, ObjectController.ACTION_BACK);
- controller.bindKey(KeyboardUtils.LEFT, ObjectController.ACTION_LEFT);
- controller.bindKey(KeyboardUtils.RIGHT, ObjectController.ACTION_RIGHT);
- // WalkControllerの対象を設定
- controller.object = camera;
- // 障害物の衝突設定
- controller.checkCollisions = true;
- // 徒歩の速度
- controller.speed = 500;
- // ジャンプ(スペースでジャンプできます)の速度
- controller.jumpSpeed = 750;
- // 重力の速度
- controller.gravity = 600;
- // 視点(制御点)の高さ
- controller.objectZPosition = 2;
- // FPS display launch
- FPS.init(stage);
- stage.addEventListener(Event.RESIZE, onResize);
- stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
- onResize(null);
- }
- private function onEnterFrame(e:Event):void
- {
- // interface
- controller.processInput();
- // Scene calculating
- scene.calculate();
- }
- /**
- * Resize Handler
- */
- private function onResize(e:Event):void
- {
- view.width = stage.stageWidth;
- view.height = stage.stageHeight;
- // BackGround Color
- var bgMatrix:Matrix = new Matrix();
- bgMatrix.rotate(90 * Math.PI / 180);
- graphics.clear()
- graphics.beginGradientFill("linear", [0xFFFFFF, 0x001122], [100, 100], [0, 255], bgMatrix);
- graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
- }
- }
- }
[Alternativa3D] Maze Wizardry #1 "Proving Grounds of the Mad Overlord" B1F
- // forked from clockmaker's [Alternativa3D] Maze
- /*
- ※起動がすごく重いです
- */
- /**
- * Alternativa3D Maze Demo
- * W,S,A,D+Spaceで移動
- * ドラッグで方向回転
- * 参考: http://clockmaker.jp/blog/2008/10/alternativa3d_walkcontroller/
- */
- package
- {
- import alternativa.engine3d.controllers.*;
- import alternativa.engine3d.core.*;
- import alternativa.engine3d.display.*;
- import alternativa.engine3d.materials.*;
- import alternativa.engine3d.primitives.*;
- import alternativa.types.*;
- import alternativa.utils.*;
- import flash.net.*;
- import flash.display.*;
- import flash.events.*;
- import flash.geom.*;
- [SWF(frameRate="30")]
- public class Main extends Sprite
- {
- private const COL_NUM:int = 20;
- private const ROW_NUM:int = 20;
- private const CELL_WIDTH:Number = 1000;
- private const CELL_HEIGHT:Number = 1200;
- private const WALL_WIDTH:Number = 50;
- private const FLOOR_HEIGHT:Number = 50;
- //cell
- //0: null
- //1: floor
- //2: block
- //4: elv
- private const CELL_FLOOR:uint = 1;
- private const CELL_BLOCK:uint = 2;
- private const CELL_ARR:Array =
- [
- [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
- [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
- [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
- [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
- [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
- [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
- [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
- [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
- [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
- [0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
- [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
- [1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1],
- [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
- [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
- [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
- [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
- [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
- [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
- [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
- [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
- ];
- //walls
- //0: null
- //1: wall
- //2: door
- //4: hidden door
- private const WALL_WALL:uint = 1;
- private const WALL_DOOR:uint = 2;
- private const WALL_HIDDEN_DOOR:uint = 4;
- private const NEWS_X:Array = [0, 1, 0, -1];
- private const NEWS_Y:Array = [-1, 0, 1, 0];
- private const NEWS_ROT:Array = [90, 0, -90, 180];
- //[north, east, south, west]
- private const WALL_ARR:Array =
- [
- [
- [1,2,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1],
- [1,1,2,1,2,1,0,0,0,1,0,0,4,4,1,1,0,0,4,4],
- [2,1,2,0,1,1,0,0,0,0,0,0,1,1,1,4,1,1,0,0],
- [1,1,1,0,1,1,1,1,2,0,0,0,0,0,1,1,1,1,1,1],
- [0,0,0,2,0,0,0,0,0,1,0,0,0,0,0,1,1,2,0,0],
- [0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,1,1,4,4],
- [1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1],
- [1,2,1,0,1,0,1,1,0,0,1,0,0,0,0,0,2,2,0,0],
- [0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,4,4],
- [1,1,1,1,1,2,1,1,1,0,0,0,0,0,0,0,1,0,1,2],
- [1,1,1,1,1,1,1,1,1,0,0,2,1,2,1,2,1,2,1,1],
- [1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1],
- [0,1,1,0,1,1,0,1,1,1,0,0,1,1,1,1,0,1,1,1],
- [0,0,0,0,0,1,2,1,0,0,0,0,4,1,1,0,0,0,1,0],
- [0,0,0,0,0,0,0,0,0,0,0,0,4,1,2,2,0,0,0,0],
- [0,0,0,0,0,1,1,1,0,0,0,0,4,1,0,0,0,0,0,0],
- [0,0,1,2,1,0,0,0,0,0,0,0,4,1,0,0,0,0,0,0],
- [0,0,0,0,0,0,1,1,1,0,0,0,4,1,1,2,1,0,0,0],
- [0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0],
- [0,1,1,1,1,1,1,2,1,0,0,1,1,1,1,1,1,1,1,1]
- ],
- [
- [0,1,1,0,1,0,0,0,1,2,1,2,0,2,0,2,0,1,1,1],
- [0,4,0,0,0,2,0,0,1,0,1,1,1,1,0,1,0,1,0,1],
- [1,1,1,1,0,1,0,0,1,0,1,1,1,2,0,2,0,2,0,1],
- [0,0,1,1,0,0,1,1,1,1,1,1,1,1,0,1,0,1,0,1],
- [0,0,2,2,0,0,1,1,1,0,1,1,1,1,1,2,0,2,0,1],
- [0,0,1,1,0,0,1,1,1,0,1,1,1,1,1,1,0,1,1,1],
- [0,0,0,1,1,1,0,1,1,0,1,1,1,1,1,1,0,2,0,1],
- [0,0,1,0,2,2,0,1,1,0,1,1,1,1,1,1,1,1,0,1],
- [0,0,1,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1],
- [0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,2,1,0,1],
- [0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,4],
- [0,0,0,0,0,0,0,0,2,1,1,0,0,0,0,0,0,0,0,1],
- [1,0,1,1,0,1,1,0,1,0,1,1,4,1,0,1,1,0,0,1],
- [1,0,1,1,1,0,0,1,1,0,1,1,1,4,1,1,1,1,1,1],
- [1,0,1,1,1,0,0,1,1,0,1,1,1,2,0,1,1,1,1,1],
- [1,0,1,1,0,0,0,0,1,0,1,1,1,2,0,1,1,1,1,1],
- [1,1,0,0,1,0,0,0,1,0,1,1,1,2,0,1,1,1,1,1],
- [1,1,0,0,1,1,0,0,1,0,1,1,1,1,1,2,0,1,1,1],
- [1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,1,1],
- [0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,1]
- ],
- [
- [1,1,2,1,2,1,0,0,0,1,0,0,4,4,1,1,0,0,4,4],
- [2,1,2,0,1,1,0,0,0,0,0,0,1,1,1,4,1,1,0,0],
- [1,1,1,0,1,1,1,1,4,0,0,0,0,0,1,1,1,1,1,1],
- [0,0,0,2,0,0,0,0,0,1,0,0,0,0,0,1,1,2,0,0],
- [0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,1,1,4,4],
- [1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1],
- [1,2,1,0,1,0,1,1,0,0,1,0,0,0,0,0,2,2,0,0],
- [0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,4,4],
- [1,1,1,1,1,2,1,1,1,0,0,0,0,0,0,0,1,0,1,1],
- [1,1,1,1,1,1,1,1,1,0,0,2,1,2,1,2,1,2,1,1],
- [1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1],
- [0,1,1,0,1,1,0,1,1,1,0,0,1,1,1,1,0,1,1,1],
- [0,0,0,0,0,1,2,1,0,0,0,0,1,4,1,0,0,0,1,0],
- [0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,2,0,0,0,0],
- [0,0,0,0,0,1,1,1,0,0,0,0,1,1,0,0,0,0,0,0],
- [0,0,1,2,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0],
- [0,0,0,0,0,0,1,1,1,0,0,0,1,1,2,2,1,0,0,0],
- [0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0],
- [0,1,1,1,1,2,1,2,1,0,0,1,1,1,1,1,1,1,1,2],
- [1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1]
- ],
- [
- [1,0,1,1,1,1,1,0,0,1,2,1,2,0,2,0,2,0,1,1],
- [1,0,4,0,0,0,2,0,0,1,0,1,1,1,1,0,1,0,1,0],
- [1,2,1,1,0,0,1,0,0,1,0,1,2,1,2,0,2,0,2,0],
- [1,0,0,1,1,0,0,0,1,1,1,1,1,1,2,0,1,0,1,0],
- [1,0,0,2,2,0,0,1,1,1,0,1,1,1,1,1,2,0,2,0],
- [1,0,0,1,1,0,0,1,1,1,0,1,1,1,1,1,0,0,1,1],
- [1,1,0,0,1,1,1,0,1,1,0,1,1,1,1,1,2,0,2,0],
- [1,0,0,1,0,2,2,0,1,1,0,1,1,1,1,1,1,1,1,0],
- [1,0,0,1,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1],
- [1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0],
- [1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0],
- [1,0,0,0,0,0,0,0,0,2,1,1,0,0,0,0,0,0,0,0],
- [1,1,0,1,1,0,1,1,0,1,0,1,1,1,2,0,1,1,0,0],
- [1,1,0,1,1,1,0,0,1,1,0,1,1,1,1,1,1,1,1,1],
- [1,1,0,1,1,1,0,0,1,1,0,1,1,1,2,0,1,1,1,1],
- [1,1,0,1,1,0,0,0,0,1,0,1,1,1,2,0,0,1,1,1],
- [1,1,1,0,0,1,0,0,0,1,0,1,1,1,2,0,1,1,1,1],
- [1,1,1,0,0,1,1,0,0,1,0,1,1,4,4,4,2,0,1,1],
- [1,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,1],
- [1,0,0,0,0,0,0,0,0,1,0,2,0,0,0,0,0,0,0,0]
- ]
- ];
- private var scene:Scene3D;
- private var view:View;
- private var camera:Camera3D;
- // The camera controller
- private var controller:WalkController;
- public function Main()
- {
- stage.scaleMode = StageScaleMode.NO_SCALE;
- stage.align = StageAlign.TOP_LEFT;
- // Creating scene
- scene = new Scene3D();
- scene.root = new Object3D();
- // create box
- for (var r:int = 0; r < CELL_ARR.length; r++ )
- {
- for (var c:int = 0; c < CELL_ARR[r].length; c++ )
- {
- var flg:uint;
- var box:Box;
- flg = CELL_ARR[r][c];
- if (flg & CELL_FLOOR)
- {
- box = Box(scene.root.addChild(new Box(CELL_WIDTH, CELL_WIDTH, FLOOR_HEIGHT)));
- box.cloneMaterialToAllSurfaces(new DevMaterial(0,0x994422));
- box.x = CELL_WIDTH * (c );
- box.y = -CELL_WIDTH * (r - ROW_NUM + 1);
- box.z = - CELL_HEIGHT / 2;
- }
- //north,east,south,west, each direction walls
- for(var news:uint = 0; news < 4; news++)
- {
- flg = WALL_ARR[news][r][c];
- if (flg & WALL_WALL)
- {
- box = Box(scene.root.addChild(new Box(WALL_WIDTH, CELL_WIDTH, CELL_HEIGHT)));
- box.cloneMaterialToAllSurfaces(new DevMaterial(0,0x999999));
- }
- else if(flg & WALL_DOOR || flg & WALL_HIDDEN_DOOR)
- {
- box = Box(scene.root.addChild(new Box(WALL_WIDTH, CELL_WIDTH, 400)));
- box.cloneMaterialToAllSurfaces(new DevMaterial(0,0x990000));
- box.z = CELL_HEIGHT / 2 - 200;
- }
- else
- {
- continue;
- }
- box.rotationZ = MathUtils.toRadian(NEWS_ROT[news]);
- box.x = CELL_WIDTH * c + NEWS_X[news] * (CELL_WIDTH /2 - WALL_WIDTH / 2);
- box.y = -(CELL_WIDTH * (r - ROW_NUM + 1) + NEWS_Y[news] * (CELL_WIDTH /2 - WALL_WIDTH / 2));
- }
- }
- }
- /*
- var plane:Plane = Plane(scene.root.addChild(new Plane(CELL_WIDTH * COL_NUM, CELL_WIDTH * ROW_NUM)));
- plane.cloneMaterialToAllSurfaces(new FillMaterial(0x221100));
- plane.z = 5000;//CELL_HEIGHT / 2;
- plane.rotationX = 0 * Math.PI / 180;
- */
- // Adding camera and view
- camera = new Camera3D();
- camera.rotationX = MathUtils.toRadian(-90)
- // camera.rotationZ = MathUtils.toRadian(120)
- scene.root.addChild(camera);
- view = new View();
- addChild(view);
- view.camera = camera;
- // 徒歩のコントローラーを作成
- controller = new WalkController(stage);
- // キーボード操作を可能にする機能
- controller.setDefaultBindings();
- // キーボードショートカットの整理
- controller.bindKey(KeyboardUtils.UP, ObjectController.ACTION_FORWARD);
- controller.bindKey(KeyboardUtils.DOWN, ObjectController.ACTION_BACK);
- controller.bindKey(KeyboardUtils.LEFT, ObjectController.ACTION_LEFT);
- controller.bindKey(KeyboardUtils.RIGHT, ObjectController.ACTION_RIGHT);
- // WalkControllerの対象を設定
- controller.object = camera;
- // 障害物の衝突設定
- controller.checkCollisions = true;
- // 徒歩の速度
- controller.speed = 2000;
- // ジャンプ(スペースでジャンプできます)の速度
- controller.jumpSpeed = 3750;
- // 重力の速度
- controller.gravity = 1200;
- // 視点(制御点)の高さ
- controller.objectZPosition = 2;
- // FPS display launch
- FPS.init(stage);
- stage.addEventListener(Event.RESIZE, onResize);
- stage.addEventListener(Event.ENTER_FRAME, onEnterFrame);
- onResize(null);
- }
- private function onEnterFrame(e:Event):void
- {
- // interface
- controller.processInput();
- // Scene calculating
- scene.calculate();
- }
- /**
- * Resize Handler
- */
- private function onResize(e:Event):void
- {
- view.width = stage.stageWidth;
- view.height = stage.stageHeight;
- // BackGround Color
- var bgMatrix:Matrix = new Matrix();
- bgMatrix.rotate(90 * Math.PI / 180);
- graphics.clear()
- graphics.beginGradientFill("linear", [0xFFFFFF, 0x001122], [100, 100], [0, 255], bgMatrix);
- graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
- }
- }
- }
notice:



