Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Coronasdk 使用物理引擎获取object.x和object.y的更新位置_Coronasdk - Fatal编程技术网

Coronasdk 使用物理引擎获取object.x和object.y的更新位置

Coronasdk 使用物理引擎获取object.x和object.y的更新位置,coronasdk,Coronasdk,嗨,我是新来的。我希望有人能帮助我 我有一个物体(称为毛茸茸的)从天上掉下来,使用电晕SDK的物理引擎 当这个毛茸茸的物体在屏幕的一半时,我想播放一个音效(wee.mp3) 我正在尝试更新furry.x和furry.y以控制更新的位置。但我不知道该怎么做,因为物理引擎会根据重力更新位置 我希望下面的代码足以帮助我 centerX = display.contentWidth * .5 centerY = display.contentHeight * .5 local furry = disp

嗨,我是新来的。我希望有人能帮助我

我有一个物体(称为毛茸茸的)从天上掉下来,使用电晕SDK的物理引擎

当这个毛茸茸的物体在屏幕的一半时,我想播放一个音效(wee.mp3)

我正在尝试更新furry.x和furry.y以控制更新的位置。但我不知道该怎么做,因为物理引擎会根据重力更新位置

我希望下面的代码足以帮助我

centerX = display.contentWidth * .5
centerY = display.contentHeight * .5

local furry = display.newImage("flurry.png")
furry.x = centerX-300
furry.y = centerY-1000
physics.addBody(furry, "dynamic", physicsData:get("flurry"))


if furry.x == centerX then
    audio.play(wee)
end

那么,在游戏开始更新我的对象Furry的位置(x,y)后,我该如何获取呢?

您可以使用运行时侦听器
enterFrame
来检测对象位置,请参见下面的代码

physics = require("physics")
physics.start()

centerX = display.contentWidth * .5
centerY = display.contentHeight * .5
local function listener( event )


local furry = display.newCircle(10,10,10)
furry.x = math.random(1, display.contentWidth)
furry.y = 10
physics.addBody(furry, "dynamic")

local function removeObject()

    if furry.y > centerY then
        furry:removeSelf()
        Runtime:removeEventListener("enterFrame", removeObject)
    end

end


Runtime:addEventListener("enterFrame", removeObject)

end

timer.performWithDelay( 500, listener ,0)

对不起,这似乎不起作用。我检查了if语句,将其改为<,然后它开始播放音效(由于对象的起始位置已经是,它不工作。==将很难工作,因为对象必须精确地位于触发它的确切位置,并且在物理上,它可能处于小数点,并且永远不会精确匹配。>应该工作,只要你输入一个标志,只检查它一次。。是的,它是h要获得条件的精确值,如果它返回分数值,您可能需要使用逻辑运算符。您好@RobMiracle,感谢您的响应,这是有意义的。仍然让我想知道,当一个对象在屏幕的一半时,是否有方法触发事件,例如在重力作用下对其应用物理。现在我使用了perform.timerWi不过我想应该有一种更优雅的方式