2013-10-11 63 views
0

我是編程新手,我想知道你能否幫我解決這個問題。我創建了一個簡單的籃球比賽,你拉回來然後釋放火球。我想知道如何使用箭頭圖像來顯示球的行進方向(它不一定是精確的軌跡,只是一個直線箭頭)。此外,我希望箭頭的yScale顯示將應用多少線性衝動。預先感謝!Corona SDK箭頭顯示球的方向?

這裏是我的投籃

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) 

回答

0

你應該知道你拉回角度的功能。只需將箭頭的.rotation值設置爲相同的角度即可。

arrow.rotation = aimAngle 

要跟進到下面的評論:

我假設你拉回來的有點像憤怒的小鳥籃球彈弓或者你必須觸摸並拖動以某種方式有一個角。在知道直角三角形兩邊長度的情況下,可以使用一些簡單的角度數學運算,並且可以使用反正切函數來計算角度。

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或其他東西)

+0

是的我明白,但你怎麼找到aimAngle? –

+0

我發佈了代碼,如果它有助於我理解! –

+0

我假設你正在將籃球拉回類似AngryBirds的彈弓,或者你必須觸摸並拖動某種方式才能擁有一個角度。在知道直角三角形兩邊長度的情況下,可以使用一些簡單的角度數學運算,並且可以使用反正切函數來計算角度。 –