2013-10-11 1 views
0

프로그래밍에 익숙하지 않고이 문제로 나를 도울 수 있는지 궁금합니다. 나는 간단한 농구 경기를 만들었는데, 그 곳에서 공을 발사하기 위해 다시 풀어 놓습니다. 볼을 움직이는 방향을 나타내는 화살표 이미지를 사용하는 방법을 알고 싶습니다 (정확한 궤도, 곧은 화살표 일 필요는 없습니다). 또한, 나는 화살표의 yScale이 얼마나 선형 임펄스가 적용되는지를 보여주고 싶습니다. 미리 감사드립니다!Ball의 방향을 보여주는 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

당신은 다시 당기는 각도를 알아야 촬영에 내 기능입니다. 화살표의 회전 값을 같은 각도로 설정하면됩니다. 난 당신이 돌아 가지 앵그리 버드와 같은 농구를 당기는 있으리라 믿고있어

이 새총 또는 당신은 감동과 각도를 가지고 어떻게 든 끌어해야 :

arrow.rotation = aimAngle 

아래의 의견까지 따르십시오. 직각 삼각형의 두 변의 길이를 알고 간단한 각도 계산법을 사용할 수 있으며, arctangent 함수를 사용하여 각도를 계산할 수 있습니다.

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 slingshot과 같은 종류의 농구를 다시 당기고 있다고 생각하거나, 각도를 가지고 어떻게 든 만지고 드래그해야합니다. 직각 삼각형의 두 변의 길이를 알고 간단한 각도 계산법을 사용할 수 있으며, arctangent 함수를 사용하여 각도를 계산할 수 있습니다. –