私は現在Androidゲームを作成しており、高速衝突検出を扱っています。私は解決策を考え出しましたが、これを行うための最も好ましい方法を知りたいです。
私の解決策:フレームを30単位移動するゲームオブジェクトがある場合、別のゲームオブジェクトをまっすぐ通過する可能性があります。したがって、更新するときは、ゲームオブジェクトを1単位繰り返し、目的の速度に達するまで衝突検出を実行してから、レンダリングします。
これはゲームオブジェクトであり、プレーヤーのレーザーまたはプレーヤー自体がレーザーと衝突したかどうかをチェックします。
public void update(PlayerDroid[] holderPlayerDroid) {
// Update the location
//y = y + velocity;
//stupidBadDroidPositionShape.setLocation(this.x, this.y);
// Updates regarding interactions with the enemy out of the StupidBadDroids perspective, which is the PlayeDroid
for(int numberOfPlayerDroid = 0; numberOfPlayerDroid < holderPlayerDroid.length; numberOfPlayerDroid++) {
// Check if the StupidBadDroid got hit
for(int iterations = 0; iterations < velocity; iterations++) {
y = y + 1;
stupidBadDroidPositionShape.setLocation(this.x, this.y);
// Check if StupidBadDroid collides with the enemy (which is the player)
if(Physics.shapeInShape(holderPlayerDroid[numberOfPlayerDroid].getPlayerPositionShape(), getPlayerPositionShape())) {
isDead = true;
}
for(int i = 0; i < holderPlayerDroid[numberOfPlayerDroid].amountOfVisibleLasers; i++) {
if(holderPlayerDroid[numberOfPlayerDroid].holderLaser[i].isDisposed() == false) {
if(Physics.shapeInShape(holderPlayerDroid[numberOfPlayerDroid].holderLaser[i].getLaserPositionShape(), getPlayerPositionShape())) {
isDead = true;
holderPlayerDroid[numberOfPlayerDroid].holderLaser[i].dispose();
}
}
}
}
}
}
この方法は非常にCPUを要求します。私が適用できるより良い解決策があると思いますか?