2011-03-23 53 views
1

嘿,我想做一个基本的曲棍球风格的比赛。 我有与球场,球员,对手和球一起工作的基本物理学。区分球和球员在进球冲突

我很努力地弄清楚我怎样才能让球进入球门 ,同时让球员和对手不要进球。

基本上对手跟随球,并且玩家由用户输入控制。 所以有两个我需要的限制。

我需要创建一个只有球可以通过的形状......这甚至有可能吗? 如果球通过球门线,我可以睡觉对手吗?

我是否正确地做了这件事?

PLAYER1只能左右移动红框 Player2只能左右移动绿色框中 球可以在外蓝盒子

playing field layout

回答

2

如果您使用Box2D,您可能需要查看传感器

Box2D Manual摘自:

有时候游戏逻辑需要知道何时两场比赛重叠但不应该有碰撞响应。这是通过使用传感器完成的。传感器是检测碰撞但不产生响应的固定装置。

您可以将任何灯具标记为传感器。传感器可能是静态的或动态的。请记住,你可能有多个固定装置,你可以有任何混合的传感器和固体装置。

传感器不生成接触点。有两种方法可以得到一个传感器的状态:

  1. b2Contact :: IsTouching
  2. b2ContactListener :: BeginContact和EndContact
+0

看起来你可能会发现。 – Rob 2011-03-23 23:18:20

1

你为什么不使用简单的走动碰撞检测?

如果在曲棍球场上移动的物体是类型球员,并且他的位置/撞击箱与球门碰撞,那么您将他的位置改回线路,因此他可能无法与目标相交。

如果对象的类型是不是一个球员,你简单的让对象传递

+0

是这不会迫使位置,使模拟误差玩家的?box2d文档说“操纵身体的转换可能会导致非物理行为” – Rob 2011-03-23 12:38:17

+0

我不知道你的意思是模拟错误,但你只需要区分玩家和球,你甚至可以让球员只有矩形的球员和“正常”的球, – sharpner 2011-03-23 12:39:28

+0

这听起来像我需要做的,但我不知道是否有可能与box2d,也许box2d不会帮助我在这里。 – Rob 2011-03-23 12:43:07

0

好了,你不要让玩家在公平的竞争环境留给向左或向右你呢?所以你只需要为球员的目标区域做相同的逻辑。

+0

游戏区是用静态物体一直创建的,有没有办法在box2d中创建一个虚拟边界框? – Rob 2011-03-23 12:40:14