gpt4 book ai didi

java - 为什么这种冲突检测有时仅起作用?

转载 作者:行者123 更新时间:2023-12-01 16:30:33 25 4
gpt4 key购买 nike

我编写了这种碰撞检测算法来检测两个多边形何时发生碰撞,它仅保证只有一个多边形在移动时才起作用,如果两个多边形都在移动,则即使应该发生碰撞,该函数也会返回false。

    public boolean detectCollision(GameObject g1, GameObject g2) {
for(int n=0;n<g2.object.npoints;n++) {
if(g1.object.contains(g2.object.xpoints[n], g2.object.ypoints[n])) {
return true;
}
}
return false;
}


游戏对象中的“对象”是实际的多边形
游戏对象的移动方式是使用称为 transform的方法,该方法将所有x和y位置值与给定参数相加并移动对象,然后将实际多边形设置为新的Xs和Ys。
下面是转换方法

    public void transform(float x, float y) {
x2 += x;
this.x += x;
x3 += x;
x4 +=x;
this.y += y;
y2 +=y;
y3+=y;
y4+=y;
}


更新点的代码:

        object.npoints = 4;
object.xpoints = new int[] {(int) x,(int) x2,(int) x4,(int) x3};
object.ypoints = new int[] {(int)y,(int) y2,(int) y4,(int) y3};
}

最佳答案

我通过在开头添加object.reset();来修改用于更新对象的代码,从而修复了冲突检测。

        object.reset();
object.npoints = 4;
object.xpoints = new int[] {(int) x,(int) x2,(int) x4,(int) x3};
object.ypoints = new int[] {(int)y,(int) y2,(int) y4,(int) y3};

关于java - 为什么这种冲突检测有时仅起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62049818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com