SlideShare une entreprise Scribd logo
1  sur  45
くるくる研究室 ケータイ Flash で 物理演算をしてみた
http://labs.kuru2jam.com/ @hara3  @biscuitjam
作品紹介 http://labs.kuru2jam.com/ くるくる研究室
科学?!
センサー大好き!
Flash Lite 4
くるくる研究室 ケータイ Flash で 物理演算をしてみた
ActionScript3 で開発 !
重力計算をしてみる
必要なプロパティ 重力加速度 (gravity) 跳ね返り系数 (bounce) 速度 (vy)
計算の手順 ,[object Object],[object Object],[object Object],[object Object]
速度 重力加速度 速度 重力加速度
this . addEventListener ( Event . ENTER_FRAME ,_enterFrameHandler); function  _enterFrameHandler(e: Event ){ // 現在の速度に重力加速度を足す vy += gravity; // 今の座標に速度を足す y += vy; // 跳ね返る処理 // ボール底の座標がステージの最下部を超えたら if ( y  +  height  / 2 >  stage . stageHeight ){    // ボールの座標をステージの最下部へ y  =  stage . stageHeight  –  height  / 2;   // 速度に跳ね返り係数をかけると跳ね返る vy *= bounce;  } }
デモ
タップの判定
タッチイベント this . addEventListener ( TouchEvent.TOUCH_TAP , onTouchTap); function  onTouchTap(e: TouchEvent ){ addBall(e. stageX ,e. stageY ); }
デモ
DeciceCentral CS5 新機能
振れます。
デモ
加速度の取得
さようなら fscommand2
Accelerometer クラス
//Accelerometer オブジェクトを作成する var  acc: Accelerometer  =  new Accelerometer (); // 端末が加速度センサを使えるかチェックする var  isSupportedAcc: Boolean  =  Accelerometer.isSupported ; if (isSupportedAcc){ // 加速度の取得開始 acc. addEventListener ( AccelerometerEvent . UPDATE ,  _updateAccHandler); } function  _updateAccHandler(e: AccelerometerEvent ){ // 加速度を取得した時の処理 ・・・ }
「振る」動作の判定
// 以前かかった力 var  preF: Number  = 0; function  _updateAccHandler(e: AccelerometerEvent ){ // マグニチュードの計算 var  ax: Number  = e. accelerationX ; //X 軸方向の加速度 var  ay: Number  = e. accelerationY ; //Y 軸方向の加速度 var  az: Number  = e. accelerationZ ; //Z 軸方向の加速度 // 端末にかかった力の大きさを計算 ( 各加速度を二乗して足す ) var  f: Number  = ax * ax + ay * ay + az * az; // 前にかかった力との差を取る。 // この差が大きければ、たくさん振ったということ var  m: Number  =  Math . abs (f - preF); if (m > 0.1){ addBall( Math.random () * 240,-30); } // 以前かかった力として更新 preF = f; }
デモ
衝突判定したい!
計算がめんどい …
帰りたい …
そうだ。 AS3 じゃないか!
AS3 神様、 力をお貸し下さい
Box2DFlashAS3 http://sourceforge.net/projects/box2dflash/
設定の流れ ,[object Object],[object Object],[object Object],[object Object]
オブジェクトの作成 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
( 実際のコードから抜粋 ) function  initBox2d(){ // 重力設定 var  gravity:b2Vec2 = new b2Vec2(0.0, 10.0); // ワールドを設定 _world =  new  b2World( gravity, true); // ボールを生成 addBall(120,40); // 更新 addEventListener ( Event . ENTER_FRAME , update); }
function  addBall(xx: Number , yy: Number ){ // ボールの形を作成 var  circleDef : b2CircleShape =  new  b2CircleShape(); var  radius :  uint  = 20; circleDef.SetRadius(radius / _m_physScale); // ボールの性質を設定 _fixtureDef.friction = 10; _fixtureDef.density = 10; _fixtureDef.restitution = 0.9; _fixtureDef.shape = circleDef; ・ ・ ・ 続く
( 続き ) // ボールのボディを設定 var  bodyDef : b2BodyDef =  new  b2BodyDef(); bodyDef.type = b2Body.b2_dynamicBody;// 重力の影響を受けるようにする bodyDef.position.Set(xx / _m_physScale, yy / _m_physScale); // ボディとムービークリップ (Ball) を結びつける bodyDef.userData =  new  Ball(); bodyDef.userData. x  = bodyDef.position. x ; bodyDef.userData. y  = bodyDef.position. y ; addChild (bodyDef.userData);// ムービークリップ (Ball) を画面表示 // 作成した bodyDef をワールド内に生成する var  circleBody : b2Body = _world.CreateBody(bodyDef); // 生成した circleBody にボールの性質を適用 circleBody.CreateFixture(_fixtureDef); }
function  update(e: Event ): void { // ワールド内の時間をすすめる _world.Step(_m_timeStep, _m_iterations, _m_positionIterations); _world.ClearForces(); // ワールド内のボディの状態をムービークリップに対応させる for  ( var  bb:b2Body = _world.GetBodyList(); bb; bb = bb.GetNext()){ var  mc:MovieClip = MovieClip(bb.GetUserData()); if  (mc){ mc. x  = bb.GetPosition().x * _m_physScale; mc. y  = bb.GetPosition().y * _m_physScale; mc. rotation  = bb.GetAngle() * (180 /  Math.PI ); } } }
デモ
その他の機能
マルチタッチ Multitouch . inputMode  =   MultitouchInputMode . GESTURE ; GPS Geolocation クラス ( AIR 限定 )
実機テストしてね
おまけ FlashLite4 はできる子
ありがとうございました。

Contenu connexe

Similaire à 寺子屋クスール @STATION5

Media Art II 2013 第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズム
Media Art II 2013  第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズムMedia Art II 2013  第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズム
Media Art II 2013 第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズムAtsushi Tadokoro
 
Continuation with Boost.Context
Continuation with Boost.ContextContinuation with Boost.Context
Continuation with Boost.ContextAkira Takahashi
 
【Unite Tokyo 2018】誘導ミサイル完全マスター
【Unite Tokyo 2018】誘導ミサイル完全マスター【Unite Tokyo 2018】誘導ミサイル完全マスター
【Unite Tokyo 2018】誘導ミサイル完全マスターUnity Technologies Japan K.K.
 
openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B
openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習BopenFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B
openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習BAtsushi Tadokoro
 
enchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみようenchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみようRyota Shiroguchi
 
iTamabi 13 第7回:ARTSAT API 実践 2 衛星の情報で表現する
iTamabi 13  第7回:ARTSAT API 実践 2 衛星の情報で表現するiTamabi 13  第7回:ARTSAT API 実践 2 衛星の情報で表現する
iTamabi 13 第7回:ARTSAT API 実践 2 衛星の情報で表現するAtsushi Tadokoro
 
Leap Motion - 1st Review
Leap Motion - 1st ReviewLeap Motion - 1st Review
Leap Motion - 1st ReviewTsukasa Sugiura
 
第3回Webkit/HTML5勉強会 - File APIと加速度センサー
第3回Webkit/HTML5勉強会 - File APIと加速度センサー第3回Webkit/HTML5勉強会 - File APIと加速度センサー
第3回Webkit/HTML5勉強会 - File APIと加速度センサーnakamura001
 

Similaire à 寺子屋クスール @STATION5 (10)

Media Art II 2013 第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズム
Media Art II 2013  第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズムMedia Art II 2013  第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズム
Media Art II 2013 第4回:openFrameworks アニメーションを極める 動きを生みだす様々なアルゴリズム
 
Ssaw08 1125
Ssaw08 1125Ssaw08 1125
Ssaw08 1125
 
Continuation with Boost.Context
Continuation with Boost.ContextContinuation with Boost.Context
Continuation with Boost.Context
 
【Unite Tokyo 2018】誘導ミサイル完全マスター
【Unite Tokyo 2018】誘導ミサイル完全マスター【Unite Tokyo 2018】誘導ミサイル完全マスター
【Unite Tokyo 2018】誘導ミサイル完全マスター
 
openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B
openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習BopenFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B
openFrameworks基礎 たくさんの図形を動かす 静的配列と動的配列 - 芸大グラフィックスプログラミング演習B
 
enchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみようenchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみよう
 
Arctic.js
Arctic.jsArctic.js
Arctic.js
 
iTamabi 13 第7回:ARTSAT API 実践 2 衛星の情報で表現する
iTamabi 13  第7回:ARTSAT API 実践 2 衛星の情報で表現するiTamabi 13  第7回:ARTSAT API 実践 2 衛星の情報で表現する
iTamabi 13 第7回:ARTSAT API 実践 2 衛星の情報で表現する
 
Leap Motion - 1st Review
Leap Motion - 1st ReviewLeap Motion - 1st Review
Leap Motion - 1st Review
 
第3回Webkit/HTML5勉強会 - File APIと加速度センサー
第3回Webkit/HTML5勉強会 - File APIと加速度センサー第3回Webkit/HTML5勉強会 - File APIと加速度センサー
第3回Webkit/HTML5勉強会 - File APIと加速度センサー
 

Plus de biscuitjam

第1回XPF(クロスプラットフォーム)ゲーム開発ツール勉強会
第1回XPF(クロスプラットフォーム)ゲーム開発ツール勉強会第1回XPF(クロスプラットフォーム)ゲーム開発ツール勉強会
第1回XPF(クロスプラットフォーム)ゲーム開発ツール勉強会biscuitjam
 
ADC MEETUP ROUND01 SESSION4
ADC MEETUP ROUND01 SESSION4ADC MEETUP ROUND01 SESSION4
ADC MEETUP ROUND01 SESSION4biscuitjam
 
AIR For Android 勉強会 第1回
AIR For Android 勉強会 第1回AIR For Android 勉強会 第1回
AIR For Android 勉強会 第1回biscuitjam
 
Lightweight Language Tiger 2010
Lightweight Language Tiger 2010Lightweight Language Tiger 2010
Lightweight Language Tiger 2010biscuitjam
 
Lightweight Language Tiger 2010
Lightweight Language Tiger 2010Lightweight Language Tiger 2010
Lightweight Language Tiger 2010biscuitjam
 

Plus de biscuitjam (6)

第1回XPF(クロスプラットフォーム)ゲーム開発ツール勉強会
第1回XPF(クロスプラットフォーム)ゲーム開発ツール勉強会第1回XPF(クロスプラットフォーム)ゲーム開発ツール勉強会
第1回XPF(クロスプラットフォーム)ゲーム開発ツール勉強会
 
ADC MEETUP ROUND01 SESSION4
ADC MEETUP ROUND01 SESSION4ADC MEETUP ROUND01 SESSION4
ADC MEETUP ROUND01 SESSION4
 
ADC MEETUP 01
ADC MEETUP 01ADC MEETUP 01
ADC MEETUP 01
 
AIR For Android 勉強会 第1回
AIR For Android 勉強会 第1回AIR For Android 勉強会 第1回
AIR For Android 勉強会 第1回
 
Lightweight Language Tiger 2010
Lightweight Language Tiger 2010Lightweight Language Tiger 2010
Lightweight Language Tiger 2010
 
Lightweight Language Tiger 2010
Lightweight Language Tiger 2010Lightweight Language Tiger 2010
Lightweight Language Tiger 2010
 

寺子屋クスール @STATION5