0

コロナもゲーム開発も初心者です。タッチでオブジェクトを動かす物理演算を使った簡単なゲームを作っています。これが私のコードです

local physics = require"physics";
local gameUI = require("gameUI")

physics.setDrawMode( "normal" )
physics.setScale( 40)
physics.setPositionIterations( 60 )

physics.start();

local _H=display.contentHeight;
local _W=display.contentWidth;

local crat1=display.newImageRect("crate1.png",40,40)
crat1.x=20;crat1.y=200;
physics.addBody(crat1,"dynamic",{density=-1000,bounce=0.1,friction=100});

local function dragBody_call(event)
--Calling drawBody() From gameUI
gameUI.dragBody(event);

end    

crat1:addEventListener( "touch", dragBody_call) -- make object draggable

シミュレーターでは、移動イベントとタッチ イベントが完全に機能し、Android デバイスでも動作します。物理演算は完璧に機能し、Touch でオブジェクトを移動することもできますが、オブジェクトを移動するのは非常に遅く、非常に困難です。そして動かない時もあります。シミュレータほどスムーズではありません。どうすればこれを修正できますか?

4

1 に答える 1

0

問題はあなただと思います

physics.setPositionIterations( 60 )

ドキュメントによると

デフォルト値は 8 です。これは、エンジンが各オブジェクトのフレームごとに 8 つの位置近似を繰り返すことを意味します。この数値を大きくすると、一時的な不正確さ (オブジェクトのオーバーラップなど)が少なくなりますが、計算オーバーヘッドが増加します。デフォルト値は、ほとんどの一般的なケースに適しています。

ここを参照してくださいhttp://docs.coronalabs.com/api/library/physics/setPositionIterations.html

その行を削除するか、パフォーマンスが本当に必要な場合は、値を小さくしてください。12 か 16 と言ってください。

于 2012-07-08T10:50:59.107 に答える