2011-03-30 80 views
0

好了,所以我的槳碰撞是工作的罰款:碰撞檢測不工作的權利

if(velo.y > 0){ 
      float t = ((position.y - radius) - paddle.position.y)/ velo.y; 

      float ballHitX = position.x + velo.x * t; 

      if(t <= 1.0){ 
       if(ballHitX >= paddle.position.x && ballHitX <= paddle.position.x + paddle.width){ 
        velo.y = -velo.y; 
       } 
      } 
     } 

但我的牆碰撞是沒有的。 (球上升的槳下時,上下不用時)

if(velo.y < 0){ 
       float t = ((position.y - radius) - (wall[2].y + wall[2].height))/ velo.y; 

       if(t <= 1.0){ 
       velo.y = -velo.y; 
       } 
      } 

如何制止這種錯誤,並使其使球反彈的牆上?

回答

1

我的猜測是你翻了兩次。

if(wall) { 
    velo = -velo; 
} 
if(paddle) { 
    velo = -velo; 
} 

所以,當你做你的槳,它是這樣的:

am i hitting the wall? nope 
am i hitting the paddle? yep! okay flip velocity 

但是,當你做你的牆,它是這樣的:

am i hitting the wall? yep! okay flip velocity 
am i hitting the paddle? yep! okay flip velocity 

,是因爲玉」重新達到兩個條件,它翻轉兩次。

您需要確定您是否已經翻轉以防止翻倍。

+0

工作。謝謝!^_ ^ – CyanPrime 2011-03-30 03:25:30