読者です 読者をやめる 読者になる 読者になる

PhysicsEditorの基本的なことについて(続き)

Corona

前の日記ソースコード貼っただけというテキトーな感じだったので、1行ずつちゃんと理解していませんでした。なので、自分でもわかるように整理してみました。


ファイルの構成はこんな感じになっています。
画像は4つ使います。自分で用意してくださいね。

f:id:jena444:20130801223212j:plain


そのファイルの中の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


ダウンロード完了して開くとこんな画面
f:id:jena444:20130730011230j:plain




②ファイルの画像をドラッグ&ドロップしてPhysicsEditorの左のスペースに置きましょう。

f:id:jena444:20130801233349j:plain

画像ではFloor.pngしか移動してませんが、残り3つの画像も移動させておきましょう。




③画像に当たり判定を設定してあげましょう。画像のボタンを押すと編集に移ります。

f:id:jena444:20130801234605j:plain

ボタンを押すと以下のような画面に変わります。すでにオートで当たり判定を作ってくれてます。問題ないならそのままokを押しましょう。この作業を画像あるだけやります。

f:id:jena444:20130801234932j:plain





ちなみに細かい数値の説明は前日の日記で書きましたがもう一度。(同じ内容です)

f:id:jena444:20130730012147j:plain

「Tolerance」の値で枠取りの雑さを決めているっぽいです。(1に近いほど当たり判定から画像がはみ出ないor引っ込みすぎない感じ)

「Vertexes」の値で枠取りをn角形にしているっぽいです。(数が多いほど当たり判定が多角形化する)





④ExporterをCoronaにしましょう。

f:id:jena444:20130801235802j:plain



⑤Publishボタンを押してLuaファイルを作りましょう。自分は「kaos.lua」という名前で保存しました。

f:id:jena444:20130802000158j:plain


生成したプログラムはmain.luaと同じ階層に置きましょう。(別の階層でも大丈夫かも?)
生成したプログラムによって画像の当たり判定を設定してくれています。なので自分でイチから当たり判定をコード化しなくても大丈夫なようになっています。コードの中身をいじらなくても大丈夫だよ(これ重要)


あとはCorona SDKで実行すれば完成です。

f:id:jena444:20130730012703j:plain


長くなりましたがこんな感じになっています。終わり!