2011-06-15 7 views
1

コロナフォーラムには何の不運もないので、ここで試してみると思いました。コロナ/ルア(OOP)のシンプルな物理オブジェクト

私はピボットジョイントでオブジェクトを作成しようとしています。シンプルだと思うが、うまく機能しない。ここでは、問題を示し、非常に単純なプロジェクトへのリンクがあります:

http://www.megaupload.com/?d=TAN72VRK

私はちょうどそれらの遺体がで作成されたオブジェクトの一部である場合は、物理システムに体を追加する方法を見つけ出すことはできません別ファイル(クラス)。誰かが助けてくれることを願っています。

EDIT:プロジェクトのリンクに加えて、ここにコードを追加:

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; 

エンド

答えて

1

物理ドン」グループ間でのみ働きます。グループ内でのみ働きます。これは、グループを使って移動するカメラを許可する目的で行われます。私が何を意味するかを見るには、Egg Breakerのデモを参照してください。シーン全体が移動するグループ内にありますが、グループ内のオブジェクトは移動するグループに反応しません。

ちなみに、最後の行でエラーがスローされるのは、物理オブジェクトでapplyForceしか使用できず、物理オブジェクトを "obj"では "red"と "blue"に設定していないからです。

+0

ええ、それをすべて考え出しました。物理システムの一部であるOOモジュールを持つのは本当に苦労しますが、display.getCurrentStage():insert(red)とたくさんのリファクタリングのおかげで動作しました。 – clua7

関連する問題