在Corona SDK中,使用自定义形状添加物理体。

physics.addBody() 只能用于圆形和矩形吗?还是可以在矢量形状、精灵、遮罩等上使用 physics.addBody()

原文链接 https://stackoverflow.com/questions/9286151

点赞
stackoverflow用户909233
stackoverflow用户909233

可以使用精灵和形状来实现,可参见 这里

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

-- 矩形物理对象
local obj = display.newRect(160, 600, 50, 50)
physics.addBody(obj, "static", {density=0.1, friction=0.1})

-- 圆形物理对象
local obj = display.newCircle(90, 500, 50)
physics.addBody(obj, "static", {density=0.1, friction=0.1, radius=50})

-- 等边三角形物理对象
local rad = 30 / 360 * 2 * math.pi
local xHalfLen = 80 * math.sin(rad)
local yLen = 80 * math.cos(rad)

local obj = display.newLine(100, 100, 100 + xHalfLen, 100 + yLen)
obj:append(100 - xHalfLen, 100 + yLen, 100, 100)
obj.width = 3
obj:setColor(255, 120, 120)

local triangleShape = {0, 0, xHalfLen, yLen, -xHalfLen, yLen}
-- 物理对象的中心在三角形的顶部
physics.addBody(obj, {density = 0.1, friction = 0.1, shape = triangleShape})

物体的形状必须是凸多边形并且由不超过 8 条边组成。

2012-02-15 01:55:28