使对象移动到触摸位置 - Corona SDK

时间:2013-07-22 12:54:31

标签: physics game-physics corona

我正在尝试将游戏对象移动到触摸位置。我尝试了很多不同的方法,但都无济于事。我正在更新每一帧的物体y位置以保持它不断向前移动,我不确定这是否会影响添加力。

这是我移动乌鸦的地方(在更新功能内):

crow:translate((platformSpeed),0)

这里是我试图让乌鸦移动到触摸位置的地方:

        local function attack(xPos,yPos)

            --get magnitude of touch vector
            local magnitude = math.sqrt(xPos*2 + yPos*2)

            --normalize vector
            xPos = xPos / magnitude
            yPos = yPos / magnitude

            print(xPos..yPos)

            local forceMag = 0.1 -- change this value to apply more or less force
            --now apply the force
            crow:setLinearVelocity(xPos*forceMag, yPos*forceMag)
            --crow:applyLinearImpulse(xPos*forceMag, yPos*forceMag, crow.x, crow.y)
        end

        local function touchHandler(event)

            if (event.phase == "began") then
            end

            if (event.phase == "ended") then
                if (event.yStart>event.y+10) then
                    jump()
                else attack(event.x,event.y) end
            end

        end

正如你所看到的,我一直在尝试线性速度和线性脉冲,但方向总是错误的!

任何帮助都会很棒,谢谢! 艾伦。

2 个答案:

答案 0 :(得分:0)

试试这个:

local cow = display.newRect(0,0,50,50)  -- create your object

local trans
local function moveObject(e)
    if(trans)then
      transition.cancel(trans)
    end
    trans = transition.to(cow,{time=200,x=e.x,y=e.y})  -- move to touch position
end
Runtime:addEventListener("tap",moveObject)

保持编码..............:)

答案 1 :(得分:0)

这与最近的问题类似。

我对最近的问题有一个答案,您可以在空白项目上检查并运行我的示例代码,看看它是如何工作的。

我的代码使用物理和线速度。

https://stackoverflow.com/a/17847475/1605727