如何在lua和corona sdk中创建一个球的堆,并保持其在地面上且不超过屏幕范围?

如何在lua和corona sdk中创建一个球的堆,并保持其在地面上且不超过屏幕范围?

现在它正在从屏幕上落下并从屏幕上消失。

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

--local sky = display.newImage("sky.png")
--sky:scale( 5, 10 )
--sky.x = -100
--sky.y = -200

local field = display.newImage("field.png")
field:scale( 5, 10 )
field.x = 240
field.y = 470
local sky = display.newImage("sky.png")
sky:scale( 10, 3 )

physics.addBody(field,{friction = 0.5})
field.bodyType = "static"
local football = display.newImage("football.png")
football.x = 180
football.y = 80
football.rotation = 20
physics.addBody(football,{density = 2.0,friction = 0.5,bounce =0.5})

local function fallingball_field()
local football = display.newImage("football.png")
football.x = math.random(400)
football.y = -100
football.rotation = 20
physics.addBody(football, { density = 4.0,friction = 0.5, bounce = 0.5})
end
timer.performWithDelay(200, fallingball_field,200)
点赞
用户3739502
用户3739502

为了将你的物理对象放置在屏幕内,你必须创建一个名为 "Boundary box" 的边界框,它将使你的球保持在屏幕内。以下是创建边界框的示例:

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

local myCircle = display.newCircle( 100, 100, 30 )
myCircle:setFillColor( 0.5 )

local leftWall = display.newRect(0,display.contentCenterY, 10, display.contentHeight)
local rightWall = display.newRect(display.contentWidth,display.contentCenterY, 10, display.contentHeight)
local bottomWall = display.newRect(display.contentCenterX, display.contentHeight - 25, display.contentWidth, 10)
local topWall = display.newRect(display.contentCenterX, 25, display.contentWidth, 10)

leftWall:setFillColor(nil)
rightWall:setFillColor(nil)
bottomWall:setFillColor(nil)
topWall:setFillColor(nil)

physics.addBody (leftWall, "static", { bounce = 0.1} )
physics.addBody (rightWall, "static", { bounce = 0.1} )
physics.addBody (bottomWall, "static", { bounce = 0.1} )
physics.addBody (topWall, "static", { bounce = 0.1} )
physics.addBody (myCircle, "dynamic", { bounce = 1.5} )

说明: "walls" 将保持你的物理对象在固定位置,假设你的应用程序设置为 水平 模式,则此示例将起作用。如果你的应用程序是 垂直 的,请让我知道。

physics.setDrawMode("hybrid") 将显示你使用物理体设置的 每个 对象的物理边界。这将更容易地看到你的对象如何相互作用。

2018-04-11 06:51:35