2014-05-20 2 views
0

나는 캐릭터가 많은 '플래 피 버드 "문자처럼 반사 게임을 개발하고 있어요.코로나 SDK, 플래 피 버드 바운스 효과

나는 잘 작동하지만, 나는 touch event으로 튀는 효과를 건네고있다. 사용자 double touches은 정말 빠르기 때문에 기본적으로 플레이어 뒤쪽에 doubles the force이있다.

또한, 플레이어가 higher height에서 dropping 경우 다음 gravity 너무 많은 것 같다 예를 들어 타고 나는 touch에 다시 플레이어를 가져 오는 더 많은 시간을 가지고, 난 그냥 알아낼 수 없습니다 양 캐릭터 bounces와 모든 touch 일관성을 유지하는 방법.

여기 바운스 효과를 내 기능입니다 :

function flyUp(event) 
    if event.phase == "began" then 
     if gameStarted == false then 
      player.bodyType = "dynamic" 
      instructions.alpha = 0 
      tb.alpha = 1 
      addColumnTimer = timer.performWithDelay(1000, addColumns, -1) 
      moveColumnTimer = timer.performWithDelay(2, moveColumns, -1) 
      gameStarted = true 

      player:applyForce(0, -300, player.x, player.y) 
     else 
      player:applyForce(0, -460, player.x, player.y) 
     end 
    end 
end 

... 그리고 여기 내 플레이어가 물리 본체로 정의된다 : 어떤 도움은 매우 극명하게 될 것이다

physics.addBody(player, "static", 
    { density=.106, bounce=.1, friction=1, radius = 30 }) 

, 나는 플레이어가 얼마나 많은 도청을했는지 그리고 얼마나 많이 떨어졌는지에 상관없이 항상 같은 액수만큼 움직이기를 원합니다.

감사

답변

0

가속하지 속도를 결정합니다. 따라서 속도 V로 아래로 움직이는 물체 (V는 양수 값이고, Corona에서 아래쪽이 양수이기 때문에)이면 applyForce()은 물체에 순간 상향 력 (지속 시간 : 1 시간 프레임)을 적용하여 물체의 하강 속도가 조금 (상향 력의 결과로 감속)이지만 중력은 일정하므로 충분한 감속을 얻기 위해 여러 번 눌러야합니다.

아마 당신이 원하는 것은 직접 setLinearVelocity()에 음수 값을 지정하면 터치시 물체가 위쪽으로 튀어 오르는 것처럼 보입니다. 중력은 그 때 포물선 궤적을 줄 것이다. 또한 물체에 항상 동일한 선 속도가 주어지면 각 탭이 동일한 상향 속도로 중력의 영향을 막을지라도 얼마나 많은 탭이 발생하는지 상관하지 않습니다. 답변에 대한

0

두 아이디어 :

  • 가 더블 터치/더블 바운스를 방지하기 위해, 오프 냉각 기간을 적용합니다. 사용자가 터치 할 때 주어진 시간 동안 추가 접촉을 무시하십시오.
  • 는 엄격하게 당신이 있습니다 터치 당 바운스의 동일한 금액 (또는 상향 력)을 받고, 말하기. 현재 속도가지면에 따라 달라지기를 원하는 것처럼 들릴 것입니다. 너무 열심히해서는 안됩니다. y 축의 속도에 따라 player:applyForce에 더 많은 힘을가하십시오. 플레이어가 떨어지는 것이 아니라면 적은 양의 힘이 필요합니다. 그들이 말단 속도로 떨어지는 경우 훨씬 더 큰 힘이 필요합니다.

"완벽한"물리학이 게임에서 덜 재미 있다는 것을 알고있는 것처럼 들립니다. 그것은 종종 그렇습니다. 뭔가 옳다고 느껴질 때까지 실험을해야 할 것입니다. 당신은 아마 그 힘을 망각하고

+0

감사합니다! 나는 단순히 setLinearVelocity에 applyForce을 변경하고 약간 아래로 중력을 설정 한 경우 다음 플레이어가 부동에 일관성이 있음을 알아 냈다. – siegs