我目前正在試圖用XNA製作一個基本的平臺遊戲,我想知道如何創建一個「跳躍效果」。我目前有基本的鍵盤輸入允許橫向移動,但我希望我的精靈緩慢進入跳躍,而不是立即傳送到那裏(現在我每次跳躍時都有類似Rectangle.Y + = 40的東西,使得精靈即刻出現在那裏)。有沒有人有任何見解?遊戲中的跳躍效果
遊戲中的跳躍效果
回答
我並不完全知道如何在XNA/C#中實現這一點,但是在我製作的Flash遊戲中,我只是添加了垂直速度屬性。我會盡我所能寫所有的東西作爲C#..
例子;創建速度屬性:
垂直速度應該不斷降低(通過重力)。建立一個重力屬性從您的播放器的地方進行訪問:
float Gravity = 2.5;
而在你的球員update()
方法,通過Gravity
遞增verticalVelocity
。同時增加玩家的Y
位置verticalVelocity
。這將模擬下降:
verticalVelocity += Gravity;
Position.Y += verticalVelocity; // this may be -= in XNA, not sure where the y axis beings
當你打一個面,速度應該重置爲0
最後,跳,簡單地從verticalVelocity
減去給定值:
public void Jump(float height)
{
// Only jump if standing on a surface.
if(verticalVelocity == 0)
verticalVelocity -= height;
}
爲了可擴展性,您應該創建一個'PhysicsSimulation'(或類似的)類並讓它包含'List
'其中Body是一個基類,玩家和任何其他應該受到影響的對象都繼承自基類。然後你可以更新'PhysicsSimulation'並且它可以處理所有物體的重力。這可以讓你的遊戲玩法更加豐富,沒有太多困難。 – annonymously 2012-02-23 07:48:35@匿名這是一個OP的建議,而不是我自己? – Marty 2012-02-23 08:46:07
兩者,我想:) – annonymously 2012-02-23 09:44:11
你最終會想要在你的遊戲中加入重力和其他力量,所以我強烈建議你爲自己節省很多痛苦並實現某種基本的力量系統。這可以使用Vector2
來完成,因爲您可以將它們添加到角色的速度。然後對你的角色施加一個瞬間的力量來推動它。
如果你真的不想使用物理引擎,你可以做一個Vector2
與高點跳躍的Y
和人物X
的,然後使用Vector2.Lerp
方法的字符位置之間進行插值跳躍的終點。
這通常是一個非常糟糕的系統使用,我強烈建議您使用現有的物理引擎,或使自己的一個簡單的。
使用一個sinusoid
代碼應該看起來像這樣:
float ground = 0.0f;
float angle = 330.0f;
jump(){
if(ground == 0.0f)ground = Rectangle.Y;
if(Rectangle.Y <= ground)
{
Rectangle.Y+=Math.Sin(angle/(Math.Pi*180));
angle++;
}
}
如果你把這個代碼放在Update方法中,它將不起作用。你的邏輯有點偏離,角色會以不同的速度向上移動。我想你真正想要做的是:'Rectangle.Y =(int)(ground + Math.Sin(angle /(Math.PI * 180)));' – annonymously 2012-02-23 09:54:15
那就是爲什麼我用'+ ='而不是' =' – user1097489 2012-02-23 14:01:13
使用'+ ='將右邊的操作數添加到左邊,然而我們在這裏添加*'ground' *到'Sin'值,然後把它分配給'Rectangle'。 – annonymously 2012-02-23 20:30:51
您可以準確地創建一個重力作用,如果你動態修改ySpeed,而不是僅僅增加40
你要聲明一個ySpeed
ySpeed = 0;
然後你要使用的加速度變量
acceleration = 0.25;
好的,現在我們已經做到了,讓我們增加引力,只要我們的玩家沒有碰到地板。
if(playerLocationY + playerHeight > floorLocationY)
{
gravity = false;
}
else
{
gravity = true;
}
if(gravity)
{
ySpeed += acceleration;
}
既然我們已經搞清楚了,我們想要包括一些讓我們跳躍的東西。
if(KeyPressed == UP)
{
ySpeed -= acceleration;
}
這將在向上的方向
現在,我們要確保我們實際上動動我們的球員,所以讓我們添加一個最後一行,我們就大功告成了。
playerLocationY += ySpeed;
恭喜你,你做到了。
- 1. 在遊戲中跳躍
- 2. 蠻力青蛙跳躍遊戲
- 3. jQuery slideDown跳躍效果
- 4. 跳躍和站在2D遊戲中的物體
- 5. 在HTML5遊戲代碼中跳躍角色
- 6. 如何在遊戲中實現平滑跳躍
- 7. 爲跳躍添加聲音效果
- 8. 實現遊戲對象的特定跳躍行爲
- 9. cocos2d所有遊戲的現實跳躍iphone
- 10. 跳躍但不返回地面平臺遊戲的角色AS3
- 11. 喜歡在遊戲中的Uilabel效果
- 12. java遊戲中的爆炸效果
- 13. iPhone遊戲中的聲音效果
- 14. Iphone,objective-c如何爲平臺遊戲製作跳躍方法
- 15. 遊戲編程:刪除運動滯後(跳躍)
- 16. 背景和跳躍在Javascript帆布遊戲
- 17. iphone遊戲的燈光效果與cocos2d
- 18. 嘟嘟跳喜歡遊戲
- 19. 如何跳轉j2me遊戲?
- 20. Visual Basic - 跳球遊戲
- 21. C#跳棋遊戲運動
- 22. Pygame中跳躍
- 23. 水果忍者遊戲中的切片效果如何工作?
- 24. Mac OS X和iPhone上的跳躍效果
- 25. 跳躍
- 26. 多人遊戲瀏覽器:線性插值造成抖動和跳躍
- 27. 如何用跳躍運動統一抓取和移動遊戲對象
- 28. 如何使用AndEngine和Box2D創建「跳躍」效果
- 29. 使用OpenGL的2D遊戲中的3D效果
- 30. 使飛躍跳躍字符
您可以爲運動添加第二個矢量(除了位置)。然後,在每次更新時,將運動矢量添加到位置矢量。在跳轉時,設置運動矢量以緩慢移動播放器。在跳躍的最高點,改變它以將球員向下移動。跳轉後,設置爲零。需要注意的是,如果有幾件事會影響運動矢量的話(添加它,而不是將它設置爲不覆蓋現有運動) – yoozer8 2012-02-23 02:38:43