【问题标题】:Java Intersection ErrorJava 交叉点错误
【发布时间】:2013-07-12 22:34:59
【问题描述】:

我的 DoLogic 方法有这段代码。我正在尝试在镜头和障碍物之间进行交叉,但我真的什么都想不出来..因为两者都是不同的对象..我试图做一些但它根本没有真正检测到什么。

for(int i=0; i<shots.length; i++)
{
    if(shots[i] != null)
    {
        shots[i].moveShot(SHOTSPEED);
        if(shots[i].getXPos() > 1280)
        {
            shots[i] = null;
        }
    }
}
for(int i=0; i<obstacles.length; i++)
{
    if(obstacles[i] == null) 
    { 
        obstacles[i] = generateObstacle(); 
        break;
    } 
    if(obstacles[i] != null)
    {
        obstacles[i].moveObstacle(); 
        if(obstacles[i].getXPos() < 10) 
        { 
            obstacles[i] = null; 
        }
        else if(obstacles[i].intersects(Player1.character))
        {
            obstacles[i] = null;
            GameSounds.hit("/resources/8bit_bomb_explosion.wav");
            lives--;
        }
    }
}

你们能给我一个例子或至少一个建议如何在障碍物和射击之间进行交叉吗?

【问题讨论】:

  • 这些类是否实现Shape?如果没有,他们应该。有关 SSCCE,另请参阅 this answer
  • 我应该在 Obstacle 中实现 Rectangle 并在镜头中实现 Oval 吗?因为这就是他们被描绘成的样子
  • 我该如何实施?我只是键入实现形状?
  • 请不要在运行时加载任何内容,即 GameSounds.hit("/resources/8bit_bomb_explosion.wav");,将此对象加载到局部变量,在应用程序上启动
  • 我稍后会这样做,但我不能做交叉路口

标签: java awt intersection java-2d


【解决方案1】:

这些类是否实现Shape?如果没有,他们应该。有关SSCCE,请参阅Collision detection with complex shapes 的答案。

..我应该在镜头中实现障碍和椭圆中的矩形?

从您对这两个对象的描述来看,这对我来说似乎是合乎逻辑的。

..我只是键入实现形状?

我倾向于使用Rectangle2DRectangle2D.Double 来表示障碍物,而Ellipse2DEllipse2D.Double 则用于拍摄。与其扩展它们,不如将它们作为实例变量保存。

试一试,让我们知道你的进展。如果您遇到困难,请发布您最佳尝试的 SSCCE。
您可能需要热链接到some small images

.. ..

【讨论】:

  • 对于 ellipse2D 也是如此 .. 它告诉我创建一个接口,如果我尝试实现矩形障碍物它告诉我它不能是障碍物的超级接口.. 因为超级接口应该是界面
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-08
  • 2013-12-09
  • 1970-01-01
相关资源
最近更新 更多