实现LWJGL JAVA冲突的最简单方法

实现LWJGL JAVA冲突的最简单方法,java,2d,lwjgl,collision,Java,2d,Lwjgl,Collision,好的,我有一个ArrayList,其中包含需要绘制到屏幕上的所有磁贴,我有一个使用箭头键移动的播放器,但我不确定如何使用它实现碰撞检测,检查当前磁贴是否已填充,如果已填充,则停止,这是我第一次从零开始创建游戏,因此非常感谢您的帮助 编辑: 瓷砖是32x32图像,基本上保存在一个ArrayList中,如果你们能帮我解决y轴碰撞问题,其余的我应该没问题。 平铺类包含x、y和平铺类型 EDIT2:我还没有尝试过任何东西,我真的不知道从哪里开始,但基本上我需要在平铺上进行某种碰撞,例如,当玩家移动时,如

好的,我有一个ArrayList,其中包含需要绘制到屏幕上的所有磁贴,我有一个使用箭头键移动的播放器,但我不确定如何使用它实现碰撞检测,检查当前磁贴是否已填充,如果已填充,则停止,这是我第一次从零开始创建游戏,因此非常感谢您的帮助

编辑: 瓷砖是32x32图像,基本上保存在一个ArrayList中,如果你们能帮我解决y轴碰撞问题,其余的我应该没问题。 平铺类包含x、y和平铺类型


EDIT2:我还没有尝试过任何东西,我真的不知道从哪里开始,但基本上我需要在平铺上进行某种碰撞,例如,当玩家移动时,如果在平铺上发生碰撞,请做些什么,但我不知道如何检查我是否发生了碰撞,做点什么

  //x = X-Axis Location //This tests for a collision of the JPanel on the left side or the right side
public boolean isLeavingSideToSide(JPanel jp)
{
    if( x <=0 || x+ width >= jp.getWidth())
    {
        BounceEvent be = new BounceEvent(this);
        notifyListeners(be);            
        return true;
    }
    else
        return false;
}
我的反弹方法更改球的颜色(执行某些操作)


希望这能帮助您入门。

碰撞检测对初学者来说并不重要,也不能在Stackoverflow帖子中详细解释;如果你还在为数组而挣扎,试着做一个简单的游戏,通过计算对象之间的距离(如圆圈)来检测碰撞

处理碰撞检测的方法有很多,但必须更具体:
您计划开发哪种基于瓷砖的游戏?

我强烈建议您阅读Katy Coe的文章,其中总结了一些实现。下面的方法在前面提到的博客中进行了解释

最简单和最直观的方法是像素颜色方法,玩家可以在具有特定颜色值的瓷砖上移动,但只能在有限的调色板上使用。遮罩方法基本上与PCA相同,但它将黑白层隐藏在自定义图形后面;后者在计算上比较昂贵,一般不推荐使用

基于网格的方法可能就是您想要的。地图的每个元素对应于栅格的一个平铺(由2D数组描述)。播放器在离散空间中移动,尽管动画可能会伪造流体运动

像素平铺方法通过对具有n个控制点的字符进行排序取整来描述冲突;这种方法允许开发人员在平铺世界中使用非平方字符。 边界框方法是PTM的一个更简单的实现,其中播放器被包装在一个矩形中。程序检查矩形的四个角是否与任何墙相交

离散碰撞检测,或其改进版,投机性联系人,用于更复杂的游戏中,您现在肯定不需要这些

不要试图一次学习所有内容,从你能想到的最简单的实现开始。 否则,您很快就会气馁,不会欣赏每种技术的优点/缺点

我最近发现了一些使用Macromedia Flash的基于瓷砖的游戏,但是您可以使用自己选择的语言轻松地应用这些技术阅读它
如果你想找到凯蒂文章的替代品,你能详细说明一下这个问题吗?你的面板上的ArrayList是什么?瓷砖到底是什么?你能为你的问题添加一些代码吗?嗨,欢迎来到StackOverflow。你试过什么,出了什么问题?你想知道玩家(在x,y位置)是否撞到了一块瓷砖(大小为32*32)。您需要知道的第一件事是tile的位置在哪里,它由tile类中的X和Y表示。然后你可以在X和Y值上加上32,以获得图像的右下角OK这是我刚才尝试的,但没有用,它的作用是在你移动之前检查它是否通过,你可以移动,但它始终通过:/t.id始终等于Title.Title\u NORMAL。你的return语句是在测试东西,它实际上没有返回任何东西。谢谢,但这只能帮助我测试玩家是否离开屏幕:/I我想测试玩家是否与瓷砖碰撞,这给你一个开始测试的地方,如果你能在屏幕上实现这一点,然后你应该了解碰撞是如何工作的,从那里你可以问一个更具体的问题。记住,你的问题越笼统,人们就越不可能去帮助你。
public void notifyListeners(BounceEvent be)
{
    for(BounceListener bl : listeners)
    {
        bl.bounced(be);
    }
}
public void bounced(BounceEvent be) {
    Ball b = be.getBall();
    Color c = b.getColor();
    int x = 256;
    int newColor1 = (int) (Math.random() * x);
    int newColor2 = (int) (Math.random() * x);
    int newColor3 = (int) (Math.random() * x);
    b.setColor(new Color(newColor1,newColor2,newColor3));
}