物体を落下させるサンプル
『基礎から学ぶ Corona SDK』を読みながら、Coronaで遊んでいます。Luaについても『入門Luaプログラミング』や『Programming in Lua』を読みながら勉強中です。
Coronaには物理エンジン(Box2D)が組み込まれていて、物理シミュレーションを行うプログラムが手軽に書けるみたい。さっそく、物体を落下させるプログラムを書いてみました。わずか10行ほどのプログラムです。
プログラムの作成手順は以下の通りです(Macの場合)。
- Corona Simulator.appを起動します。
- 「New Project」アイコンをタップして新しいプロジェクトを作成します。
- ウィザードでアプリの名前と、プロジェクトの保存先を指定します。
- 保存先にmain.luaが自動生成されるので、そこに以下のプログラムを書きます。
-- main.lua -- 箱を落下させるサンプル local physics = require "physics" physics.start() -- 箱 local box = display.newRect(display.contentWidth/2-50/2, 0, 50, 50) box:setFillColor(0, 255, 255) -- 地面 local ground = display.newRect(0, display.contentHeight-50, display.contentWidth, 50) ground:setFillColor(0, 255, 0) physics.addBody(box, { density=1.0, friciton=0.5, bounce=0.5 }) physics.addBody(ground, { density=1.0, friciton=0.5, bounce=0.5 }) ground.bodyType = "static" -- 地面固定
プログラムをシミュレータで実行したのが以下のスクリーンショットです。水色の物体が、地面(緑色)に向かって落下します。地面に衝突すると弾み、やがて静止します。
課題:
- physics.addBodyの引数で指定したdensityやfrictionなどのパラメータを変更すると、物体の挙動がどのように変わるのかよく分かっていない。
Coronaシミュレータでアプリ起動中、エディタでmain.luaを編集して保存するタイミングで自動的にシミュレータが再起動します(設定で変更可能)。インタラクティブに開発できるのはすごくうれしいですね。