在Java中更好的波浪

时间:2013-05-28 14:54:24

标签: java

我正在制作一个玩家发射波浪的游戏(如潮汐而不是谐波),我有一个系统,我可以实现它移动一段距离并且它会消失。它也会从实体中反弹(我可能会添加得不太好)。我想知道是否有办法使这更加现实和可分离,而不是完全改变。 这是曲线(我使用的是slick2d)。

one = new Vector2f((float)referenceX, (float) referenceY);
two = new Vector2f((float) (referenceX + ((width * amplitude) / Math.PI)), (float)(referenceY - (height * amplitude)));
three = new Vector2f((float) ((referenceX + width) - ((width * amplitude) / Math.PI)), (float)(referenceY - (height * amplitude)));
four = new Vector2f((float)(referenceX + width),(float)(referenceY));`
new Curve(one, two, three, four);

通过移动参考点并扩展宽度来移动。

这是碰撞代码

if ((s.player.getBounds().getWidth() / 2) + s.player.getBounds().getX() > 
                (e.getBounds().getX() + e.getBounds().getWidth()) )
{
    this.referenceX = e.getBounds().getX() + (e.getBounds().getWidth() / 4);
    this.referenceY = e.getBounds().getY();
}
else if ((s.player.getBounds().getWidth() / 2) + s.player.getBounds().getX() <
                e.getBounds().getX())
{
    this.referenceX = e.getBounds().getX();
    this.referenceY = e.getBounds().getY();
}
else
{
    this.referenceX = s.player.getBounds().getX() + 4;
    this.referenceY = e.getBounds().getY();
}

我应该如何解决这个问题,以使波浪看起来更逼真?

1 个答案:

答案 0 :(得分:2)

看一下代码,我猜测波浪看起来并没有正确地从玩家身上扩散,而且可能没有弹跳好。即使你的波浪从最简单的实体上反弹,就像垂直于波浪路径的直墙一样,你会发现很难用曲线或甚至一堆曲线以逼真的方式表示波浪。我想你会发现用更多的光线投射方式来模拟波浪要容易得多:

不要让玩家拍摄波浪,而是想到他们拍摄固定数量的粒子:

  • wave是一个粒子集合(它不一定是一个大数字)
  • 如果玩家以45度射击,波浪'宽度'为10度,则将他们的波浪视为玩家留下的11点,角度为40,41,42,43,44,45,...... 50 。你的波浪持续的时间越长,或者它可能越走越远,你可能需要的点数越多越平滑。
  • 每个点都是一个具有角度,路径和行进距离的对象
  • 在每个时间增量期间,使用其路径和距离计算该点的新位置(它可能会随着它进一步减速,或者每次反弹时减速,在一定距离后死亡,甚至模型'波吸收'wall)
  • 使每个点对象负责处理其碰撞并相应地采取行动:当粒子撞击对象时,计算其新角度或路径。
  • 当绘制波浪时,按顺序通过粒子点运行曲线或线段。