我正在使用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. Box2D矩形碰撞
- 4. Pygame矩形碰撞
- 5. AndEngine粒子碰撞
- 6. HashTables如何处理碰撞?
- 7. AndEngine Box2D。移除碰撞后的碰撞游戏碰撞
- 8. 圆和矩形碰撞
- 9. Sprite与矩形碰撞
- 10. 2D旋转矩形碰撞
- 11. 矩形棱镜碰撞
- 12. 旋转矩形碰撞
- 13. 碰撞检测Libgdx矩形
- 14. 多个矩形碰撞
- 15. 圆形与矩形之间的碰撞
- 16. 加工中的高级矩形碰撞
- 17. ActionScript 3.0中的矩形碰撞检测?
- 18. Android中的2D矩形碰撞检测
- 19. LibGDX - 2d中的矩形碰撞检测?
- 20. 级碰撞。处理
- 21. SdlDotNet平台游戏:碰撞矩形A(玩家)碰撞矩形B(等级)
- 22. Andengine TimerHandler和检测碰撞
- 23. AndEngine和box2d碰撞过滤
- 24. 圆形和矩形碰撞Android
- 25. 如何在检测到碰撞后处理碰撞
- 26. 如何确定矩形与圆的碰撞?
- 27. android中的雪碧碰撞andengine
- 28. andengine gles2中的碰撞检测
- 29. Java游戏碰撞检测,(侧面碰撞)与矩形
- 30. 矩形之间的碰撞检测libgdx
谢谢你的重播,我可以计算boxer.please的第一部分清楚地向我解释。 – user1351341 2013-02-28 05:18:40
@ user1351341添加了一些示例代码来帮助您。 – 2013-02-28 10:33:18