在目标碰撞中区分球和球员

时间:2011-03-23 12:00:26

标签: java box2d jbox2d

嘿,我正在尝试制作基本的曲棍球风格游戏。 我有基本的物理学与球场,球员,对手和球一起工作。

我正在努力弄清楚如何让球进入球门 同时让玩家和对手不要进入目标。

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

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

我是以正确的方式去做的吗?

Player1只能在红色框中移动 Player2只能在绿色框中移动 球可以在外部的蓝色框中移动

playing field layout

3 个答案:

答案 0 :(得分:2)

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

取自Box2D Manual

  

有时候游戏逻辑需要知道两个灯具何时重叠但是应该没有碰撞响应。这是通过使用传感器完成的。传感器是检测碰撞但不产生响应的夹具。

     

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

     

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

     
      
  1. b2Contact :: IsTouching
  2.   
  3. b2ContactListener :: BeginContact和EndContact
  4.   

答案 1 :(得分:1)

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

如果在曲棍球场上移动的物体是类型球员并且他的位置/击球员与球门发生碰撞,则你将他的位置改回线,因此他可能无法与球门相交。

如果对象的类型不是玩家,你可以简单地让对象传递

答案 2 :(得分:0)

嗯,你不允许玩家左边或右边离开比赛场地吗?所以你只需要为球员的目标区域做同样的逻辑。