2012-03-07 7 views
0

어떻게하면 게임 캐릭터의 물리가 좌우로 조금만 기울어 지도록 할 수 있습니까? 여기에 내가 ms_throw.png 서 남자의 이미지입니다코로나 세트 물리학 제한

collector = display.newImage ("ms_throw.png") 
collector.x = 10 
collector.y = 10 
physics.addBody(collector, {friction = 1.0, bounce = 0.6}) 

내 문자를 선언하는 방법은 ... 컬렉터는 오른쪽 (사용 가속도계) 왼쪽 나는 그가 때 만 비트를 기울 배우를 필요로 이동합니다 그래서 기본적으로 움직이는 .. 내가 전화를 기울이면 뒤집히는 것을 원하지 않는다는 것을 의미합니다. 어떻게 이것을합니까?

답변

0

트릭은 coordinateyapplyForce(forcex,forcey,coordinatex,coordinatey)으로 조정하는 것입니다.

마찰이 심하면 대상이 기울어집니다.
틸트 각을 제한하려면 상자를 사용하여 케이지를 고정하십시오.

local physics = require("physics") 
physics.start() 
physics.setGravity(0,10) 

centerx = display.viewableContentWidth/2+(display.contentWidth-display.viewableContentWidth)/2 
centery = display.viewableContentHeight/2+(display.contentHeight-display.viewableContentHeight)/2 

borderx = (display.contentWidth-display.viewableContentWidth)/2 
bordery = (display.contentHeight-display.viewableContentHeight)/2 
local w = display.viewableContentWidth/2 
local h = 100/2 
local allowanceHeight = 15 

local collectorLimiter = {} 
--cannot do in createScene because need to do together with physics 
local ix,iy = centerx,bordery+display.viewableContentHeight-60 
collectorLimiter[1] = display.newRect(0,0,display.viewableContentWidth,4) 
collectorLimiter[1].x,collectorLimiter[1].y = ix,iy-h-allowanceHeight 
collectorLimiter[2] = display.newRect(0,0,display.viewableContentWidth,4) 
collectorLimiter[2].x,collectorLimiter[2].y = ix,iy+h 
collectorLimiter[3] = display.newRect(0,0,4,h*2+allowanceHeight) 
collectorLimiter[3].x,collectorLimiter[3].y = ix-w,iy 
collectorLimiter[4] = display.newRect(0,0,4,h*2+allowanceHeight) 
collectorLimiter[4].x,collectorLimiter[4].y = ix+w,iy 

for i = 1,#collectorLimiter do 
    --collectorLimiter[i].isVisible = false 
end 

physics.addBody(collectorLimiter[1],"static", {friction = 0.3,bounce = 0, filter = {categoryBits = 4,maskBits = 6} }) 
physics.addBody(collectorLimiter[2],"static", {friction = 0.3,bounce = 0, filter = {categoryBits = 4,maskBits = 6} }) 
physics.addBody(collectorLimiter[3],"static", {friction = 0.3,bounce = 0, filter = {categoryBits = 4,maskBits = 6} }) 
physics.addBody(collectorLimiter[4],"static", {friction = 0.3,bounce = 0, filter = {categoryBits = 4,maskBits = 6} }) 

local collector = display.newRect(0,0,80,100) 
collector.x,collector.y = centerx,centery+480 

physics.addBody(collector, {friction = 0.3, density = 0.2, bounce = 0, filter = {categoryBits = 2}}) 

local function OnTouch(event) 
     -- Move our collector based on the accelerator values 
    if event.phase == "began" then 
     collector.ix,collector.iy = event.x,event.y 
    elseif event.phase == "moved" then 
     if collector.ix and collector.iy then 
      local dx = (event.x-collector.ix)*0.4 
      collector:applyForce(dx,0,collector.x,collector.y-10) 
      collector.ix,collector.iy = collector.x,collector.y 
     end 
    elseif event.phase == "ended" or event.phase == "cancelled" then 
     collector.ix,collector.iy = nil,nil 
    end 
end 

Runtime:addEventListener("touch",OnTouch) 
+0

소년이 나중에 .. 덕분에 그것을 시도 할 것이다 difficult..anyway 소리! – imin

+0

@imin 이것은 가장 확실한 틸트 동작을 제공하므로 트레이드 오프에 대한 수학을 수행하고 그만한 가치가 있는지 확인하십시오 = – cctan