2012-07-11 160 views
1

我有一個拖動對象的問題。當我通過另一個對象快速拖動對象時,它會粘在另一個對象內。然後當我釋放它時,它就會開始射擊。在Corona SDK中拖動毛刺?

這裏是我使用gameUI.lua編寫的代碼。有人可以幫我嗎?

display.setStatusBar(display.HiddenStatusBar) 

local physics = require("physics") 
physics.start() 
physics.setDrawMode("normal") 
physics.setGravity(0,5) 

local gameUI = require("gameUI") 

local floor = display.newImage("floor.jpg") 
physics.addBody(floor, "static", {friction = 999, bounce = 0}) 
floor.y = 900 

local box = display.newImage("box.png") 
physics.addBody(box, {friction = 99, bounce = 0}) 
box.x = 100 

function localDrag(event) 
    gameUI.dragBody(event, { maxForce=100000, frequency=1000, dampingRatio=1,        center=true }) 
end 

function box:touch(event) 
if event.phase == "began" then 

    self.markX = self.x 
    self.markY = self.y 

elseif event.phase == "moved" then 

    local x = (event.x - event.xStart) + self.markX 
    local y = (event.y - event.yStart) + self.markY 

    self.x, self.y = x, y 

    if (self.x > 595) then 
    self.x = 595 
    end 
    if (self.x < 46) then 
    self.x = 46 
end 
    if (self.y > 795) then 
    self.y = 795 
    end 
end 

return true 
end 

box:addEventListener("touch", localDrag) 

local triangle = display.newImage("triangle.png") 
triangle.x = 200 
triangleShape = { -45, 45 , -45, -45 , 45, 45 } 
physics.addBody(triangle, {friction = 99, bounce = 0, shape=triangleShape}) 
function localDrag(event) 
gameUI.dragBody(event, { maxForce=1000000, frequency=1000, dampingRatio=1,     center=true }) 
end 

function triangle:touch(event) 
if event.phase == "began" then 

    self.markX = self.x 
    self.markY = self.y 

elseif event.phase == "moved" then 

    local x = (event.x - event.xStart) + self.markX 
    local y = (event.y - event.yStart) + self.markY 

    self.x, self.y = x, y 

    if (self.x > 595) then 
    self.x = 595 
    end 
    if (self.x < 46) then 
    self.x = 46 
end 
    if (self.y > 795) then 
    self.y = 795 
end 
end 

return true 
end 
triangle:addEventListener("touch", localDrag) 

local wall = display.newImage("wall.jpg") 
physics.addBody(wall, "static", {friction = 0, bounce = 0}) 
wall.x = 665 

local wall1 = display.newImage("wall.jpg") 
physics.addBody(wall1, "static", {friction = 0, bounce = 0}) 
wall1.x = -25  

回答

1

你的摩擦是非常非常高,我建議減少很多。 (在Corona SDK文檔中閱讀關於身體屬性的信息可能並不會造成什麼傷害,但是這裏有更詳細的信息比我在一篇文章中可以找到的更詳細。)

對於你的身體卡住,可能是相關的對摩擦,雖然如果他們實際上重疊,我會懷疑這是因爲睡覺。您可以將obj.isSleepingAllowed = false設置爲導致問題的機構並測試,我相信您可能會看到顯着的改進。

+0

我試過obj.isSleepingAllowed = false和obj.isBullet = true,將摩擦力改爲1,它仍然重疊,但它不再射出來 – 2012-07-12 15:41:00