gl.enchant.js を使って 10 分で 3D ゲームプログラミングしてみた. んで, その様子をビデオキャプチャーしてみました!!

phiary に引っ越しました. 毎日プログラミングやWebに関する情報を発信しています! RSS 登録してたまに覗いたり, tweet やハテブして拡散してもらえると幸いです.

Pocket

gl.enchant.js を使って 10 分で 3D ゲームプログラミングしてみた. んで, その様子をビデオキャプチャーしてみました!!

簡単な避けゲーを作ってみました. なんとコードはたった 81行! gl.enchant.js はホント生産性高いです!!

最近, 時間制限を設けて動画でキャプチャしながらゲームプログラミングするのにハマっています. 時間と戦い汗かきながらプログラミングするのがなんか新鮮でクセになっちゃってw

wise9 で清水さんや gl.enchant.js 開発者である 高橋さんもキャプチャしながらプログラミングしてたりして, 盛り上がってきています.

最近は, 面白いことがありすぎて眠れない><

Play Game Download

About

タッチでプレイヤー移動

  • 終了条件 … 敵との衝突
  • スコア … 生存時間

leapfest 2012

leawpfest2012

ついに2日後に迫った leapfest 2012.

leapfest 2012 でも時間制限を設けたリガチンココーディングバトルがあるということで, 上の動画よりも白熱したプログラミングが直に見れるみたいですよ!!

私は行けないのでぜひ参加されたかたは感想下さい.

また下に今までの動画のバックナンバーをまとめておきました. 予習をしておこう!!

チケットの購入はこちら.

Game Programming Movie

バックナンバーや, wise9 での動画.

enchant.js を使って 0 から 48 分以内にゲームを作ってみました!

最初に作ったやつ.

enchant.js を使って 0 から 30分ぐらいでシューティングゲームを作ってみました!

次に作ったやつ.

enchant.jsで10分間でシューティングゲームを作る!

清水さんが作られたやつ

10分で作るWebGL対応の3Dシューティングwith enchant.js

高橋さんが作られたやつ

Code

今回作ったゲームのスクリプト部分です.

/**
 * phi
 */

// 定数
var SCREEN_SIZE = 640;
var PLAYER_MODEL    = "model/player.mqo";
var ENEMY_MODEL     = "model/virus.mqo";

// おまじない
enchant();

window.onload = function() {
    var game = new Game(SCREEN_SIZE, SCREEN_SIZE);
    
    game.preload(PLAYER_MODEL, ENEMY_MODEL);
    
    game.onload = function() {
        var scene = game.rootScene;
        var scene3d = new Scene3D();
        
        // ライト
        var light = new DirectionalLight();
        light.color = [1.0, 1.0, 1.0];
        scene3d.setDirectionalLight(light);
        
        // カメラ
        var camera = new Camera3D();
        camera.y = 1;
        camera.z = 15;
        camera.centerY =-1;
        scene3d.setCamera(camera);
        
        // プレイヤー
        var player = new Sprite3D();
        player.set(game.assets[PLAYER_MODEL]);
        scene3d.addChild(player);
        
        scene.ontouchmove = function(e) {
            player.x = (e.x/SCREEN_SIZE)*4-2;
            player.y =-((e.y/SCREEN_SIZE)*4-2);
        };
        
        scene.onenter = function() {
            game.frame = 0;
        };
        
        scene.onenterframe = function() {
            if (game.frame % 10 == 0) {
                var enemy = new Sprite3D();
                enemy.set(game.assets[ENEMY_MODEL]);
                enemy.x = Math.random()*4-2;
                enemy.y = Math.random()*4-2;
                enemy.z = -100;
                enemy.onenterframe = function() {
                    this.z += 1;
                    
                    // 消去
                    if (this.z > 15) {
                        this.parentNode.removeChild(this);
                    }
                }
                scene3d.addChild(enemy);
            }
            
            // 衝突判定
            for (var i=0,len=scene3d.childNodes.length; i

TRACK BACK URL

POST COMMENT

メールアドレスが公開されることはありません。

COMMENT