コロナフォーラムには何の不運もないので、ここで試してみると思いました。コロナ/ルア(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;
エンド
ええ、それをすべて考え出しました。物理システムの一部であるOOモジュールを持つのは本当に苦労しますが、display.getCurrentStage():insert(red)とたくさんのリファクタリングのおかげで動作しました。 – clua7