Corona SDK中的箭头用于显示球的方向吗?

我是编程新手,想知道你能否帮我解决这个问题。我创建了一个简单的篮球游戏,你需要拉回然后释放来投球。我想知道如何使用箭头的形象来显示球将要运动的方向(不需要精确的轨迹,只需一个直线箭头)。同时,我想让箭头的 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)
点赞
用户1870706
用户1870706

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

arrow.rotation = aimAngle

回复以下评论:

我假设你拉篮球的方式有点像Angry Birds弹弓或者你必须接触和拖动某种程度的角度。你可以使用一些简单的角度数学,知道一个直角三角形的两边长度,然后使用反正切函数计算角度。

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

其中 srcXsrcY 将是位置(或者如果你在拖动它的初始位置时就知道篮球的起始位置),而 dstXdstY 将是结束阶段时的 event.xevent.y 的值。 事件表有一个 xStartyStart 成员,用于跟踪触摸事件开始的位置,所以也许

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

你可能需要调整其中一些数字,以使它们按照你想要的方式对齐(即,你可能需要添加 180 或其他一些东西)。

2013-10-14 00:57:28