PhysicsEditorの基本的なことについて(続き)
前の日記がソースコード貼っただけというテキトーな感じだったので、1行ずつちゃんと理解していませんでした。なので、自分でもわかるように整理してみました。
ファイルの構成はこんな感じになっています。
画像は4つ使います。自分で用意してくださいね。
そのファイルの中のmain.luaのソースコード↓(前回とちょっと違うよ)
local physics = require("physics") physics.start() local physicsData = (require "kaos").physicsData(1.0) -- create physical floor shape local bar = display.newImage("Floor.png")--地面 bar.x = 384; bar.y = 1024 bar.myName = "Floor" physics.addBody( bar, "static", physicsData:get("Floor") ) function newItem() local names = {"kao", "onigiri", "yajirusi"}; local name = names[math.random(#names)]; -- set the graphics obj = display.newImage(name..".png"); -- remember object's type obj.myName = name -- set the shape physics.addBody( obj, physicsData:get(name)) -- random start location obj.x = 384 + math.random( 160 ) - math.random( 160 ) obj.y = -100 -- add collision handler obj.collision = onLocalCollision obj:addEventListener( "collision", obj ) end local dropCrates = timer.performWithDelay( 1000, newItem, 100 )
それでは1~数行ずつソースコードを見てみましょう。
最初の2行はphysicsを利用するためにとりあえず書きます。書かないとエラー出ますし。
3行目の
local physicsData = (require "kaos").physicsData(1)
ではファイルにあるkaos.luaを読み込むようになっています。
次に問題になるのが8行目の
physics.addBody( bar, "static", physicsData:get("Floor") )
です。ここでは画像に当たり判定をつけるようにします。当たり判定の切り抜きはPhysicsEditorで決めてあるので大丈夫。
次はソースコード真ん中あたりにある↓
function newItem() local names = {"kao", "onigiri", "yajirusi"}; obj = display.newImage(name..".png"); ~省略~ end
newItem()の解説。ここでは画像の「kao」「onigiri」「yajirusi」を生成して上から降ってくるような設定をしています。名前をあらかじめ配列に入れておけば画像を読み込むのにひとつずつ書かなくても大丈夫になります。取り込む画像が多くなったときに使えそうですね。別の画像を入れたい場合には、PhysicsEditorで当たり判定をつけたあと、配列に入れる名前を変更するだけでokです。
最後の行の
local dropCrates = timer.performWithDelay( 1000, newItem, 100 )
では上から画像生成の間隔と生成する画像の数を調整できます。
ちなみに1000が画像生成の間隔(1000=1秒)、100が画像の数になっています。
こんなところでmain.luaの解説は終わり。
続いてPhysicsEditorの解説をしたいのですが、正直言ってまだよくわかってない点が多いので理解できた部分だけ解説します。
①とりあえず最初にPhysicsEditorをダウンロードしましょう↓。自分はwin版でダウンロードしました。
http://www.codeandweb.com/physicseditor
ダウンロード完了して開くとこんな画面
②ファイルの画像をドラッグ&ドロップしてPhysicsEditorの左のスペースに置きましょう。
画像ではFloor.pngしか移動してませんが、残り3つの画像も移動させておきましょう。
③画像に当たり判定を設定してあげましょう。画像のボタンを押すと編集に移ります。
ボタンを押すと以下のような画面に変わります。すでにオートで当たり判定を作ってくれてます。問題ないならそのままokを押しましょう。この作業を画像あるだけやります。
ちなみに細かい数値の説明は前日の日記で書きましたがもう一度。(同じ内容です)
「Tolerance」の値で枠取りの雑さを決めているっぽいです。(1に近いほど当たり判定から画像がはみ出ないor引っ込みすぎない感じ)
「Vertexes」の値で枠取りをn角形にしているっぽいです。(数が多いほど当たり判定が多角形化する)
④ExporterをCoronaにしましょう。
⑤Publishボタンを押してLuaファイルを作りましょう。自分は「kaos.lua」という名前で保存しました。
生成したプログラムはmain.luaと同じ階層に置きましょう。(別の階層でも大丈夫かも?)
生成したプログラムによって画像の当たり判定を設定してくれています。なので自分でイチから当たり判定をコード化しなくても大丈夫なようになっています。コードの中身をいじらなくても大丈夫だよ(これ重要)
あとはCorona SDKで実行すれば完成です。
長くなりましたがこんな感じになっています。終わり!