2013-03-26 75 views
0

奧凱進出口比較新的在製作遊戲的過程中頸背和IM,我做了型運動學的機構呼籲的平臺,我只是想它在一定範圍內的第四回遷階段。有人可以看看我會出錯哪裏,謝謝。頸背移動平臺

private function enterFrameHandler(ev:Event):void 
{ 
if (movingPlatform.position.x <= 150) 
      { 
       movingPlatform.position.x += 10; 
      } 
      if (movingPlatform.position.x >= 260) 
      { 
       movingPlatform.velocity.x -= 10; 
      } 
} 

回答

2

中的一個的第一,如果你的塊由10你是10遞減velocity.x另一個遞增position.x我猜你的意思是在這兩個position.x

其次,想象一下movingPlatform.position.x是150,你的enterFrameHandler運行一次。 movingPlatform.position.x將變爲160,並且在下一次enterFrameHandler被調用時,如果塊將被執行,則由於160不小於或等於150或大於或等於260而不被調用。

可以使用速度來指示側其運動並倒轉,一旦你超越的優勢,是這樣的:

// assuming velocity is (1,0) 
private function enterFrameHandler(ev:Event):void { 
    if (movingPlatform.position.x <= 150 || movingPlatform.position.x >= 260) { 
     movingPlatform.velocity.x = -movingPlatform.velocity.x; 
    } 

    movingPlatform.position.x += movingPlatform.velocity.x; 
} 

顯然,如果對象是已在假設X = 100,這將只是保持反相它的速度,所以要麼使這可能會導致問題確保將其150-260之間,或者添加額外的檢查,以防止其反轉它的方向不止一次。

這可能是做一個更好的方式:

// assuming velocity is (1,0) 
private function enterFrameHandler(ev:Event):void { 
    if (movingPlatform.position.x <= 150) { 
     movingPlatform.velocity.x = 1; 
    } else if (movingPlatform.position.x >= 260) { 
     movingPlatform.velocity.x = -1; 
    } 

    movingPlatform.position.x += movingPlatform.velocity.x; 
} 
+0

胡感謝的人,這工作就像一個魅力。仍然讓我感受到頸部特性。 – Robster 2013-03-26 23:26:47

1

一般:

運動機構都應該只與速度移動,如果你改變自己的立場直接那麼他們是不是真的因爲他們是「瞬移」,並儘可能的物理學而言它們的速度仍然是恰好爲0所以像碰撞和摩擦將無法正常工作,你可能期望移動之多。

如果你想仍然立場,而不是速度工作,那麼就在這是專爲運動美體類中的方法setVelocityFromTarget:

body.setVelocityFromTarget(targetPosition, targetRotation, deltaTime); 

這裏的DeltaTime是時間步驟中,您即將使用在以下調用space.step();

這一切都是真的做基於當前位置/旋轉,目標位置/旋轉的時間應該到那裏量設定適當的速度和angularVel。