2010-10-20 18 views
0

我目前有一種方法,用於檢查是否從頂部/底部/側面出界。對象本身就是一個球,我有一個關於讓球正確反彈的問題?我如何去做這件事?C#XNA使對象保持在邊界內

//行爲不是我想要的。

if (InsideOfBounds) 
{ 
    Vector3 mCenter = Ball.getCenter(); 
    Vector3 normalizeV = tempCenter; 
    normalizeV.Normalize(); 
    mHeroBall.setVelocity(-testSpeed * normalizeV); 
} 

回答

1

我可以爲你提供一個例子,從寫在XNA分組討論克隆:

Ball.cs

基本上,你翻轉速度的正確的組件,使一個「完美」的反彈。如果你願意,你可以通過乘以像0.95或1.1這樣的係數來增加摩擦或彈性,這樣你的球速就會改變。

0

當您更新對象(球)的位置時,您想要檢查新值是否超出界限(以及哪個頂點\底部或左\右)。如果它實際上超出範圍,請翻轉速度矢量中的正確元素。

例如:如果球已通過綁定的左側則BallSpeed.X = -BallSpeed.X

不要忘記新的速度更新球的位置,而不是老在這一點上,也將飛離屏幕當前幀(除非這不是問題)。