Corona SDK移动对象而不受重力影响

时间:2017-06-29 20:45:19

标签: android lua corona game-physics

因此,我正在尝试制作Flappy Birdesque游戏,以了解如何使用Corona SDK制作游戏。我有一个顶级列,我希望能够线性移动。所以我使用的是topColumn.setLinearVelocity(),但我在游戏中也有重力设置,所以鸟可以正确地拍打:)。但我的问题是,当游戏开始时,管道会因重力而掉到地上。有没有办法移动topColumn和bottomColumn而不受重力的影响?它们现在是动态体,但我不知道如何使用静态移动它们。

任何帮助?

local physics = require "physics"
physics.start()
physics.setGravity( 0, 100 )
...
function addColumns()
	
	height = math.random(display.contentCenterY - 200, display.contentCenterY + 200)

	topColumn = display.newImageRect('topColumn.png',100,714)
	topColumn.anchorX = 0.5
	topColumn.anchorY = 1
	topColumn.x = display.contentWidth
	physics.addBody(topColumn, "dynamic", {density=0, bounce=0, friction=0})
	topColumn.y = height - 160
	topColumn:setLinearVelocity( -20,0 )
	
	bottomColumn = display.newImageRect('bottomColumn.png',100,714)
	bottomColumn.anchorX = 0.5
	bottomColumn.anchorY = 0
	bottomColumn.x = display.contentWidth
	bottomColumn.y = height + 160
	physics.addBody(bottomColumn, "dynamic", {density=0, bounce=0, friction=0})
	bottomColumn:setLinearVelocity( -20,0 )

end	
...

1 个答案:

答案 0 :(得分:1)

听起来你需要运动体。

来自Corona documentation

  

"动态" - 动态物体被完全模拟。他们可以被移动   手动代码,但通常它们会根据力量移动   重力或反动碰撞力。这是默认的体型   对于Box2D中的物理对象。动态物体可以与所有人发生碰撞   身体类型。

     

"静态" - 静态物体不会在模拟下移动它们   表现得好像有无限质量。静态物体可以移动   由用户手动,但他们不接受应用程序   速度。静态物体仅与动态物体碰撞,而不是与物体碰撞   其他静态物体或运动物体。

     

"运动" - 运动物体仅在模拟下移动   他们的速度。运动机构不会对像力这样的力量做出反应   重力。它们可以由用户手动移动,但通常是   通过设定速度来移动。运动物体只与碰撞   动态的身体,而不是其他运动体或静体。