Corona SDK箭头显示球的方向?

时间:2013-10-11 00:08:55

标签: lua corona

我是编程新手,我想知道你是否可以帮我解决这个问题。我创造了一个简单的篮球比赛,在那里你拉回然后释放来发球。我想知道如何使用箭头图像来显示球的行进方向(它不一定是精确的轨迹,只是一个直箭头)。此外,我希望箭头的yScale显示将应用多少线性脉冲。提前谢谢!

这是我射球的功能

local function ballTouched(event)
if ball.x == 100 and ball.y == 100 then
    if event.phase == "began" then
        display.getCurrentStage():setFocus(ball)
        arrow.alpha=1
    elseif event.phase == "ended" then
        physics.start()
        ball:applyLinearImpulse((event.xStart - event.x)/2, (event.yStart - event.y)/2, ball.x, ball.y)
        display.getCurrentStage():setFocus(nil)
        arrow.alpha=0
        man2.alpha=1
        man.alpha=0

    end
end
end

Runtime:addEventListener("touch", ballTouched)

1 个答案:

答案 0 :(得分:0)

你应该知道你要拉回的角度。只需将箭头的.rotation值设置为相同的角度即可。

arrow.rotation = aimAngle

跟进以下评论:

我假设你正在把篮球拉回来像有点像AngryBirds弹弓,或者你必须以某种方式触摸和拖动才能有一个角度。你可以使用一些简单的角度数学,你知道直角三角形两边的长度,你可以使用反正切函数来计算角度。

local function angleBetween( srcX, srcY, dstX, dstY )
    local angle = ( math_deg( math_atan2( dstY-srcY, dstX-srcX ) )+90 )
    --if ( angle < 0 ) then angle = angle + 360 end
    return angle%360
end

其中srcX和srcY将是位置(或者如果你拖动它就是篮球的起始位置)和dstX,dstY将是event.x,event.y你在结束阶段放松的地方。事件表有一个xStart和yStart成员,可以跟踪触摸事件的开始位置,所以可能

 aimAngle = angleBetween(event.xStart, event.yStart, event.x, event.y)

您可能需要使用其中一些数字,以便按照您希望的方式排列(即您可能需要添加180或其他内容)