我正在使用AndEngine進行拳擊遊戲。我有兩個動畫精靈A和B,代表兩個拳擊手。我想區分他們的健康狀況。如果精靈A用手擊打B,B的健康就會降低。我如何區分兩個精靈之間的這種碰撞?如何處理AndEngine中的特定矩形部分碰撞
1
A
回答
0
我想你問的是,當一個拳擊手精靈與另一個拳擊手精靈發生衝突時,你如何確定哪一個拳擊手應該受到傷害。基本的答案是你需要收集和利用更多的信息,而不僅僅是是否發生碰撞。我所建議的是,你認爲拳擊不是整個精靈之間的碰撞,而是你計算出一個代表拳頭的形狀,並在拳擊與其他拳擊手碰撞的關鍵時刻檢查它。例如:
當拳擊手的拳,你要確定其接觸「問題」(在衝頭的充分伸展動畫中的時間的關鍵時期,據推測,和延伸的小在這段時間之前和之後)。在這段時間內,在拳擊手上設置一些布爾值爲true,而在其他時間,將其設置爲false。如果這是真的,在拳擊手的更新中,你應該計算一個代表「拳頭」的形狀。你不必渲染這個形狀(雖然它可以幫助你調試和測試),你只需要計算它的位置,這樣你就可以檢查與其他拳擊手碰撞的「拳頭」。拳頭擊球區域應該與拳擊手在衝刺時在概念上相關聯,所以你不會檢查拳擊手和他自己的拳頭之間的碰撞。您可能希望將衝擊形狀作爲拳擊手實體中的字段。因此,如果拳頭在另一個實體(即另一名拳擊手)的這段時間內發生衝突,則會對其他拳擊手造成一定的健康傷害。
您在下面的評論中詢問了一些額外的實施細節。下面的代碼不是一個完整的實現,但應該讓你開始。
public class BoxerSprite extends AnimatedSprite {
boolean isPunching = false;
Rectangle fist;
public BoxerSprite(float pX, float pY, float pWidth, float pHeight, ITiledTextureRegion pTiledTextureRegion,
ITiledSpriteVertexBufferObject pTiledSpriteVertexBufferObject) {
super(pX, pY, pWidth, pHeight, pTiledTextureRegion, pTiledSpriteVertexBufferObject);
//Create a "fist" object within your boxer sprite
fist = new Rectangle(fistX, fistY, fistWidth, fistHeight, vertexBufferObjectManager);
//Use setPosition to move the fist to the appropriate location during the animation.
fist.setPosition(pX, pY);
}
}
相關問題
- 1. 旋轉矩形碰撞處理
- 2. 矩形物理和碰撞
- 3. 矩形碰撞
- 4. LibGdx中的矩形碰撞
- 5. andengine管理多個碰撞
- 6. Pygame矩形碰撞
- 7. Box2D矩形碰撞
- 8. 處理陣列中的矩形碰撞檢測
- 9. 矩形之間的碰撞
- 10. HashTables如何處理碰撞?
- 11. hibernate如何處理碰撞?
- 12. AndEngine粒子碰撞
- 13. AndEngine Box2D。移除碰撞後的碰撞遊戲碰撞
- 14. 如何在碰撞後移除矩形?
- 15. SpriteKit PhysicsBody非矩形碰撞
- 16. Sprite與矩形碰撞
- 17. 2D旋轉矩形碰撞
- 18. 矩形棱鏡碰撞
- 19. 圓和矩形碰撞
- 20. 旋轉矩形碰撞
- 21. Libgdx矩形牆碰撞
- 22. Java - 旋轉矩形碰撞
- 23. 碰撞檢測Libgdx矩形
- 24. 多個矩形碰撞
- 25. 矩形和圓形之間的碰撞
- 26. 圓形與矩形之間的碰撞
- 27. 用pygame進行Python矩形碰撞處理
- 28. ActionScript 3.0中的矩形碰撞檢測?
- 29. Android中的2D矩形碰撞檢測
- 30. 加工中的高級矩形碰撞
謝謝你的重播,我可以計算boxer.please的第一部分清楚地向我解釋。 – user1351341 2013-02-28 05:18:40
@ user1351341添加了一些示例代碼來幫助您。 – 2013-02-28 10:33:18