-2

我正在制作一个游戏,其中玩家发射波浪(如潮汐波而不是谐波),并且我有一个系统,我实现它移动一段距离然后消失。它也会从实体中反弹(我可能不太好补充)。我想知道是否有一种方法可以使这更加现实和可分离,而不是完全改变。这是曲线(我使用的是 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();
}

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

4

1 回答 1

2

查看代码,我猜测波浪看起来不像正确地远离玩家扩展,并且可能没有很好地反弹。即使您的波浪从最简单的实体(例如垂直于波浪路径的直墙)反弹,您也会发现很难使用曲线甚至一堆曲线以逼真的方式表示波浪。我认为您会发现以更多的光线投射方式对波浪进行建模要容易得多:

与其让玩家射一波,不如让他们射出固定数量的粒子:

  • 波是粒子的集合(不一定是大数字)
  • 如果玩家以 45 度射门,波浪“宽度”为 10 度,则将他们的波浪视为以 40、41、42、43、44、45、... 50 角从玩家离开的 11 个点。您的波浪将持续下去,或者它可能传播得越远,您可能需要越多的点来平滑建模。
  • 每个点都是一个物体,它有一个角度或路径,以及它走过的距离
  • 在每个时间增量期间,使用它的路径和距离计算该点的新位置(它可能会随着它走得更远而减慢,或者每次反弹时减慢,在一定距离后死亡,甚至模拟“吸波”墙)
  • 让每个点对象负责处理其碰撞并采取相应的行动:当一个粒子撞击一个对象时,计算它的新角度或路径。
  • 当需要绘制波时,按顺序通过粒子点运行曲线或线段。
于 2013-05-28T15:41:39.663 回答