【问题标题】:Corona SDK arrow to show direction of ball?Corona SDK箭头显示球的方向?
【发布时间】:2013-10-11 00:08:55
【问题描述】:

我是编程新手,不知道您能否帮我解决这个问题。我创建了一个简单的篮球游戏,您可以在其中拉回然后释放以发射球。我想知道如何使用箭头的图像来显示球的行进方向(它不必是确切的轨迹,只需一个直箭头)。另外,我希望箭头的 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)

【问题讨论】:

    标签: lua coronasdk


    【解决方案1】:

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

    arrow.rotation = aimAngle
    

    要跟进以下 cmets:

    我假设您正在像 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 或其他数字)

    【讨论】:

    • 是的,我明白了,但是你如何找到目标角度?
    • 我假设您正在像 AngryBirds 弹弓一样将篮球向后拉,或者您必须以某种方式触摸和拖动才能获得角度。您可以使用一些简单的角度数学来知道直角三角形两条边的长度,并且可以使用反正切函数来计算角度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 2013-01-17
    • 2017-07-26
    • 2011-04-30
    • 2012-03-28
    • 1970-01-01
    相关资源
    最近更新 更多