PhysicsEditorの基本的なことについて

Corona SDKはもともと物理エンジン的なものを積んでるらしいのでさっそく使ってみようということで色々ググってみるとタイトル通り「PhysicsEditor」というものが。とりあえず無料でダウンロード出来るのでしてみました。



ダウンロード終了していざ起動してみるとこんな画面↓

f:id:jena444:20130730011230j:plain


当然ですが全部英語になっています。Corona SDKでさえ日本人利用者がほとんどいなくてリファレンスも全て英語なのでイヤな気持ちになりますが、コレしか選択肢がないのでとりあえず英語のままで。


PhysicsEditorを日本語で解説してあるサイトがほとんどなかったので自力でやるしかありません。


そんな中、公式サイトにチュートリアル↓が乗っていたのでとりあえず参考にしながら作りました。


Getting started with CoronaSDK and PhysicsEditor


f:id:jena444:20130730012006j:plain

画像の当たり判定の多角化の解説っぽいですね。

f:id:jena444:20130730012147j:plain

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

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




とりあえず、上記のような数値だけしか理解出来なかったので、そんな感じでチュートリアルを少しだけ変えて自分なりのプログラムを作りました。

f:id:jena444:20130730012703j:plain


リンゴとかボールを自分で作成した画像に変えただけです。上からオブジェクトが降ってくるような簡単なアプリです。雑です。解説めんどいのでソースコード置いておきますね。(main.luaです)

display.setStatusBar( display.HiddenStatusBar )

-- init physics
local physics = require("physics")
physics.start()

-- background image
--local bkg = display.newImage( "Background.png" )

-- load the physics data, scale factor is set to 1.0
local physicsData = (require "kaos").physicsData(1.0)
-- create physical floor shape
local bar = display.newImage("gfx/Floor.png")--地面
bar.x = 384; bar.y = 1024
bar.myName = "Floor"
physics.addBody( bar, "static", physicsData:get("Floor") )

function newItem()	
    
    -- all items
	local names = {"kao", "onigiri", "yajirusi"};

    -- just pick a random one
	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 )


 ちょこっとだけ解説すると、main.luaを上記↑のように入力します。チュートリアルをダウンロードするとわかるのですが、もう一つソースコードが必要となります。自分のプログラムだと「kaos.lua」というものを作りました。

 どうやって作ったかと言うと、PhysicsEditorをチュートリアル通り当たり判定の設定をして、「Publish As」というボタンを押すとLuaコードを自動で作成します。これが当たり判定のソースコードそのものであり、main.luaで読み込ませるようにすると何もいじらずに実行出来るようになります。


さすがに雑に作ったのでちゃんとフル機能使えるようにならないといけませんね。