【问题标题】:Simple physics objects in Corona/LuaCorona/Lua 中的简单物理对象
【发布时间】:2011-06-15 17:35:07
【问题描述】:

在 Corona 论坛上没有任何运气,所以我想我会在这里尝试。

我只是想创建一个带有枢轴关节的对象。看起来很简单,但它就是行不通。

如果这些物体是在单独文件(类)中创建的对象的一部分,我只是不知道如何将这些物体添加到物理系统中。希望有人能提供帮助——为此苦苦挣扎了好几个星期。

这是我的代码:

main.lua:

local JointedObj = require("JointedObj")

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

local o = JointedObj.new()
o.x = 50
o.y = 200

local wall = display.newRect( 350, 10, 50, 300 )
physics.addBody ( wall, "static", {density=1, friction=1, bounce=.5})

local floor = display.newRect( 0, 300, 400, 10 )
physics.addBody ( floor, "static", {density=1, friction=1, bounce=.5})

--toss the object against the wall
o:toss(120, -160, o.x, o.y)

JointedObj.lua:

module(..., package.seeall)

--constructor
function new()
local obj = display.newGroup()

local red = display.newImageRect( "images/red.png", 27, 18 )
local blue = display.newImageRect( "images/blue.png", 11, 9 )
blue.x = -16

obj:insert(red)
obj:insert(blue)

function obj:toss(xForce, yForce, xPos, yPos )

    --THIS WORKS, BUT OBVIOUSLY THE OBJECT HAS NO JOINTS
    --physics.addBody( obj, "dynamic", {density=1, friction=1, bounce=0.3} )
    --obj:applyForce( xForce, yForce, xPos, yPos )


    --THIS IS WHAT I WANT TO DO. AS-IS, THE OBJECT JUST FALLS THROUGH EVERYTHING
    physics.addBody( red, {density=1, friction=1, bounce=0.3} )
    physics.addBody( blue, {density=1, friction=1, bounce=0.3} )
    myJoint = physics.newJoint( "pivot", red, blue, 0,0 )
    myJoint.isLimitEnabled = true
    myJoint:setRotationLimits( -30, 30 )
    --obj:applyForce( xForce, yForce, xPos, yPos )  --THIS THROWS A NIL ERROR IF UNCOMMENTED


end


return obj;
end

【问题讨论】:

    标签: oop lua physics coronasdk


    【解决方案1】:

    物理不适用于组间,只能在组内使用。这样做是为了允许使用组来移动摄像机。请参阅 Egg Breaker 演示以了解我的意思。整个场景都在一个四处移动的组中,但组内的对象不会对组移动做出反应。

    顺便说一句,最后一行抛出错误的原因是因为您只能在物理体上使用 applyForce,并且您没有在“obj”上设置物理体,只能在“红色”和“蓝色”上。

    【讨论】:

    • 是的,想通了。拥有作为物理系统一部分的 OO 模块确实很痛苦,但由于 display.getCurrentStage():insert(red) 和大量重构,我让它工作了。
    猜你喜欢
    • 1970-01-01
    • 2019-06-15
    • 2015-01-28
    • 1970-01-01
    • 2014-01-10
    • 2014-01-02
    • 1970-01-01
    • 2018-06-08
    • 2018-04-10
    相关资源
    最近更新 更多