2014-02-19 46 views
0

在創建sprite時出現問題當我觸摸屏幕時,在Windows Phone的XNA遊戲中跳轉。逐步向上移動Sprite(跳轉)

我現在有以下代碼。

foreach (TouchLocation tl in touchCollection) 
{ 
    if ((tl.State == TouchLocationState.Pressed)) 
    { 
     rectangleSprite.Y -= 55; 
    } 
} 

注:

rectangleSprite = new Rectangle((int)newPosition.X, (int)newPosition.Y, textureSprite.Width, textureSprite.Height) 

我的代碼,使得精靈移動到新位置。這是一種跳躍,但我希望它更加緩慢,所以你可以看到它跳躍。

+1

看看這個博客:[The Wizard - Part 2 Making a Sprite Jump] – scheien

+0

我真的需要enum來做這個? :S沒有很好地理解那個教程。 –

+0

你的代碼沒有跳過精靈,但將它移動到55像素。你必須創建一個代碼,將sprite從當前位置移動到位置+ 55px,然後再回落。有幾百種不同的方式來實現這個目標。固定速度,使用竇功能,使用重力和速度... –

回答

3

爲了讓你的角色跳得更好,你必須爲你的代碼添加速度,並將你的跳轉函數放在update()方法中。

您需要添加重力。 在你的更新中,你可以添加這樣的東西。

float i = 1; velocity.Y += 0.15f * i; 

提醒:^這個只有當你設置你的代碼,這樣的作品,你性格不能去表面的下方矗立在。 因爲每次代碼調用update()方法都會使其停止。

然後,如果你想,做一個boolean,檢查你的球員是否跳了。

foreach (TouchLocation tl in touchCollection) 
{ 
    if ((tl.State == TouchLocationState.Pressed && hasJumped == false)) 
    { 
     position.Y -=10f; 
     veloctity.Y -= 5f; 
    } 
} 

編輯:

不要忘記更新你的角色的位置。 位置:

Vector2 position; 

更新代碼:

position = position + velocity; 

有些事情ü可能想讀/表:

scheien說:
http://www.xnadevelopment.com/tutorials/thewizardjumping/thewizardjumping.shtml

可能有助於解釋的小視頻。
http://www.youtube.com/watch?v=ZLxIShw-7ac

我也是在這個網站來學習這樣任何建議或編輯的歡迎!

+0

爲什麼我們使用另一個變量只存儲值1? 我們可以簡單的使用velocity.Y + = 0.15f。 我試着這樣做,但它保持「不跳躍」。它只是將精靈從一個位置移動到另一個位置:S –

+0

我把它從我的一個遊戲中取出,它是另一個函數,你不必使用值1 xD。 請觀看視頻內容,它會解釋如何做到這一點。 – MCollard

+0

你解決了你的問題嗎?如果這個答案你想接受嗎? – MCollard