我是编程新手,我想知道你是否可以帮我解决这个问题。我创造了一个简单的篮球比赛,在那里你拉回然后释放来发球。我想知道如何使用箭头图像来显示球的行进方向(它不一定是精确的轨迹,只是一个直箭头)。此外,我希望箭头的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)
答案 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或其他内容)