我正在尝试将游戏对象移动到触摸位置。我尝试了很多不同的方法,但都无济于事。我正在更新每一帧的物体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
正如你所看到的,我一直在尝试线性速度和线性脉冲,但方向总是错误的!
任何帮助都会很棒,谢谢! 艾伦。
答案 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)
这与最近的问题类似。
我对最近的问题有一个答案,您可以在空白项目上检查并运行我的示例代码,看看它是如何工作的。
我的代码使用物理和线速度。