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()裡第一個參數是用來設定外觀的精細度,再看一次執行結果:








沒有留言:
張貼留言