【问题标题】:Java Game - Collision Detection for walls using rectanglesJava Game - 使用矩形的墙壁碰撞检测
【发布时间】:2012-05-01 14:49:47
【问题描述】:

我正在开发一个 java 游戏,我现在正试图用我的瓦片地图进行碰撞检测,但它并没有按照我想要的方式工作。我在角色上制作了 4 个矩形。一个在顶部,底部,左侧和右侧。矩形的宽度都是速度的 2 倍。

要检查矩形是否与瓷砖上的矩形相交,我使用此代码

if(LeftSide.intersects(Map.colRect[i])){
            MovingLeft = false;
            x_pos+=vel;

        }

要定义矩形,我使用此代码

LeftSide = new Rectangle(x_pos,y_pos+(vel*2),(vel*2),spriteHeight-1-(vel*4));
    RightSide = new Rectangle(x_pos+spriteWidth-1,y_pos+(vel*2),(vel*2),spriteHeight-(vel*4)-1);
    UpSide = new Rectangle(x_pos+(vel*2),y_pos,spriteWidth-(vel*4)-1,(vel*2));
    DownSide = new Rectangle(x_pos+(vel*2),y_pos+spriteHeight-1,spriteWidth-(vel*4)-1,(vel*2)); 

当玩家撞到墙壁,进入墙壁的速度与速度相同,然后被推回墙壁时,会发生这种情况。这会导致角色在你撞墙并按住键时前后移动做出模糊的动作。

有什么算法可以用来解决这个问题吗?还是其他方法?

角色上的矩形如下所示:

任何帮助将不胜感激。我真的很想解决这个问题

谢谢

【问题讨论】:

  • hmm .. 当从墙上弹起时,为什么不把速度设置为零?

标签: java collision


【解决方案1】:

您可能想要模拟弹性碰撞,讨论了here 并说明了here

【讨论】:

  • 这是个好主意,但我 14 岁,我不知道这意味着什么:/
  • 我怀疑您应该考虑使用可以为您完成大部分此类工作的游戏 API。它还将有助于解决帧速率和图形绘制的(几乎不可避免的)问题。游戏开发是一个非常专业的领域,所以并不容易。
  • 您知道我应该使用哪些 API 吗?我已经知道 slick2D 看起来不错
  • 您还可以查看相关Q&A 中的更基本示例。另一方面,Filthy Rich Clients 展示了如何制作自己的框架。
  • 有没有办法在不使用自定义 API 的情况下做到这一点?还是没有极其复杂的数学?只是半复杂的?任何东西
猜你喜欢
  • 2016-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多