2017-09-27 1 views
0

현재 Corona SDK를 사용하여 하향식 기반 게임을 만들려고합니다. 기본적으로 원하는 것은 원수가지도의 중심으로 바로 이동하도록하는 것입니다. transition.to()으로하기는 쉽지만, 그렇게하면 물체가 대상에 도달 할 때까지 물리 성을 잃게됩니다.Corona SDK - 물리학을 사용하여 객체에 대한 경로를 구현하는 방법

궁금한 점이 있다면 어쨌든 transition.to()과 같이 개체를 움직이게 할 수 있습니까? 왜냐하면지도의 중심으로 가려고 할 때 내 물건이 장애물을 치고 싶기 때문입니다.

게임 시나리오 정보 : 타워 방어 게임과 마찬가지로 중간 (성)에는 측면에서 무작위로 respawn하는 다른 물체 (적)가 쳐야 할 대상이 있습니다.

function spawnEnemy() 
    for i=1,numberEnemies do 
     enemy = display.newImage("enemy.png") 
     physics.addBody(enemy,"dynamic") 
     enemy:addEventListener("tap",enemyKill) 
     enemy.gravityScale = -0 

     if math.random(2) == 1 then 
      enemy.x = math.random(-100, -10) 
      enemy:setLinearVelocity(50,0) 
     else 
      enemy.x = math.random (display.contentWidth + 10, display.contentWidth + 100) 
      enemy:setLinearVelocity(-40,0) 
     end 
      enemy.y = math.random(display.contentHeight) 
      --enemy.trans = transition.to(enemy, {x=centerX, y=centerY, time=5000,onComplete=hitCastle}) 

    end 
    timer.performWithDelay(10000, spawnEnemy, 0) 
end 

답변

0

당신은 원수의 선 속도를 설정해야이되도록 중심을 향해 적의 머리. 적과 성이 충돌하면 적 대상을 장면에서 제거 할 수 있습니다. 이렇게하려면 두 지점 (적과 중앙) 사이의 벡터를 계산 한 다음 벡터의 X 및 Y 값에 적을 이동하려는 속도를 곱해야합니다.

Enemy position = (EnemyXPos, EnemyYPos) 
Center Position = (CenterXPos, CenterYPos) 
Velocity Vector = (CenterXPos - EnemyXPos, CenterYPos - EnemyYPos) 

당신은 당신에게 x와 1

의 길이가 중심 적에서 가리키는 벡터의 y 값을 줄 것이다 속도 벡터 (이 답변에 포함되지 않음) 정상화 할 필요가 이 시점에서

Adjusted Velocity Vector = (NormalizedVelXVal * Speed, NormalizedVelYVal * Speed) 

당신은 적에게 위의 계산 된 조정 속도 벡터와 동일한 선 속도를 설정합니다

속도를 조정합니다.

+0

정확히 내가 찾고 있던 것이 었습니다. –