Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua 身体在电晕中没有反应_Lua_Box2d_Coronasdk - Fatal编程技术网

Lua 身体在电晕中没有反应

Lua 身体在电晕中没有反应,lua,box2d,coronasdk,Lua,Box2d,Coronasdk,我刚开始制作我的第一个电晕游戏,已经遇到了一个问题。在下面的代码中,板条箱应该弹离用户绘制的线,但出于某种原因,板条箱只是不断移动,好像线根本不在那里。如果有人能帮我,我将不胜感激 local physics = require "physics" physics.start() local crate1 = display.newRect(display.contentWidth/2,display.contentHeight/2, 40,40) physics.addBody( cra

我刚开始制作我的第一个电晕游戏,已经遇到了一个问题。在下面的代码中,板条箱应该弹离用户绘制的线,但出于某种原因,板条箱只是不断移动,好像线根本不在那里。如果有人能帮我,我将不胜感激

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

local crate1 = display.newRect(display.contentWidth/2,display.contentHeight/2, 40,40)
physics.addBody( crate1, { density=4.0, friction=0.3, bounce=.4} )
crate1.bodyType = "dynamic"
crate1.isBodyActive = true
crate1:setFillColor( 1,0,.3)



local line
lineGroup = display.newGroup()
local prevX,prevY
local isDrawing = false
local i = 0

local function distanceBetween(x1, y1, x2, y2)
   local dist_x = x2 - x1
   local dist_y = y2 - y1
   local distanceBetween = math.sqrt((dist_x*dist_x) + (dist_y*dist_y))
   return distanceBetween
end

local function drawLine(e)
if(e.phase == "began") then
  if(line) then
    lineGroup:remove(1)
    line = nil
  end

  prevX = e.x
  prevY = e.y
  isDrawing = true
elseif(e.phase == "moved") then
  local distance = distanceBetween(prevX, prevY, e.x, e.y)
  if(isDrawing and distance < 100) then
     if(line) then lineGroup:remove(1) end
     line = display.newLine(prevX, prevY, e.x, e.y)
     line:setStrokeColor( 0.5,0,1 )
     line.strokeWidth = 5

    local dist_x = e.x - prevX
    local dist_y = e.y - prevY
    physics.addBody(line, "static", { density = 1, friction = 0.5, bounce     = 2, shape = {0,0, dist_x, dist_y, 0, 0} } )
    lineGroup:insert(line)
 end
elseif(e.phase == "ended") then
  isDrawing = false
 end
end

Runtime:addEventListener("touch",drawLine)
本地物理=需要“物理”
物理开始
本地板条箱1=display.newRect(display.contentWidth/2,display.contentHeight/2,40,40)
addBody(板条箱1,{密度=4.0,摩擦=0.3,反弹=0.4})
板条箱1.bodyType=“动态”
1.isBodyActive=真
板条箱1:setFillColor(1,0,3)
本地线路
lineGroup=display.newGroup()
本地prevX,prevY
本地isDrawing=false
局部i=0
(x1,y1,x2,y2)之间的局部函数距离
局部距离x=x2-x1
本地区y=y2-y1
本地distanceBetween=math.sqrt((dist_x*dist_x)+(dist_y*dist_y))
返回距离
结束
局部功能抽绳(e)
如果(e.阶段==“开始”),则
如果(行)那么
线组:删除(1)
直线=零
结束
prevX=e.x
prevY=e.y
isDrawing=true
elseif(e.phase==“moved”),然后
本地距离=距离(prevX,prevY,e.x,e.y)
如果(isDrawing和距离<100),则
如果是(线),则线编组:删除(1)端点
行=显示。换行符(prevX,prevY,e.x,e.y)
行:设置行程颜色(0.5,0,1)
线宽=5
本地区x=e.x-prevX
本地区y=e.y-上一个
addBody(直线,静态,{密度=1,摩擦力=0.5,反弹=2,形状={0,0,距离x,距离y,0,0})
线组:插入(线)
结束
elseif(e.phase==“结束”),然后
isDrawing=false
结束
结束
运行时:addEventListener(“触摸”,抽绳)
删除:shape={0,0,dist_x,dist_y,0,0}

改为:

physics.addBody(line, "static", { density = 1, friction = 0.5, bounce = 2 } )    
我已经在仿真器中尝试过了,而且效果很好。

我得到一个错误,说“corona无法索引几乎没有区域的‘物理体’”。不过,我在2013版的corona上尝试了这段代码,它成功了。有什么建议吗?
physics.addBody(line, "static", { density = 1, friction = 0.5, bounce = 2 } )