local physics = require( "physics" ) physics.start() local sky = display.newImage( "bkg_clouds.png", 160, 195 ) local ground = display.newImage( "ground.png", 160, 445 ) physics.addBody( ground, "static", { friction=0.5, bounce=0.3 } ) local crate = display.newImage( "crate.png", 180, -50 ) crate.rotation = 5 physics.addBody( crate, { density=3.0, friction=0.5, bounce=0.3 } )其中,用到的圖形如下:
bkg_clouds.png |
crate.png |
ground.png |
不過,現實世界裡,很多物件不是如此方方正正,
假設我們把crate.png和gound.png修改如下:
crate.png |
ground.png |
碰撞的過程和結果都我們修改後的圖形無關,
執行仍是按照原來矩形形狀的碰撞結果???
其實在physics.addBody()參數裡,我們可以指定物體的形狀,
參數可以是矩形,圓形或多角形等等,
在這裡,我們可以直接用原來圖形的形狀來當參數,
也就是借用graphics.newOutline()取得的外觀,
修改程式如下:
local physics = require( "physics" ) physics.start() local sky = display.newImage( "bkg_clouds.png", 160, 195 ) local ground = display.newImage( "ground.png", 160, 445 ) local ground_outline = graphics.newOutline( 2, "ground.png" ) physics.addBody( ground, "static", { friction=0.5, bounce=0.3,outline=ground_outline } ) local crate = display.newImage( "crate.png", 180, -50 ) crate.rotation = 5 local image_outline = graphics.newOutline( 2, "crate.png" ) physics.addBody( crate, { density=0.2, friction=0.5, bounce=0.3,outline=image_outline} )graphics.newOutline()裡第一個參數是用來設定外觀的精細度,
再看一次執行結果:
沒有留言:
張貼留言