0

我是 Corona 和游戏开发的新手。我正在制作一个简单的物理游戏,以通过触摸移动物体。这是我的代码

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 回答