私はのゲームのために持ち物を作ろうとしていますが、これを行う良い方法はプレイヤーに手を置くことになりました。私はその色を見つけることができます。x +y
。Slick2dピクセルの色でxとyを見つける
私は画像を拡大しようとするまで、それは完璧に働いていました。そして、私はこの狂気を例外から除外します。
これはx
とy
を見つけるために私のコードです:
public int[] getLocation(Image i, Color c){
Image scaled = i.getScaledCopy(getWidth(), getHeight());
for(int x = 0; x < scaled.getWidth(); x++){
for(int y = 0; y < scaled.getHeight(); y++){
if(scaled.getColor(x, y).r == c.r && scaled.getColor(x, y).g == c.g && scaled.getColor(x, y).b == c.b){
int[] xy = {x,y};
return xy;
}
}
}
return null;
}
、これは私が例外がある
float x = (float) (getLocation(walkLeft.getCurrentFrame(), new Color(1, 1, 1))[0] + getX());
float y = (float) (getLocation(walkLeft.getCurrentFrame(), new Color(1, 1, 1))[1] + getY());
g.fillRect(x, y, 2, 2);
それを使用する方法です:
java.lang.ArrayIndexOutOfBoundsException: 16384
、それがリード私はこの行に戻ります:
if(i.getColor(x, y).r == c.r && i.getColor(x, y).g == c.g && i.getColor(x, y).b == c.b){
getLocation
の方法です。 私はその死んだことを簡単に感じましたが、それは私を困惑させました。応答する誰にも感謝します。
イメージを拡大する理由は? 'getLocation'は、画像の2倍の拡大/縮小コピーをループし、元のピクセルをチェックしようとします。 – copeg
getLocationを更新しましたが、それでも同じ問題が発生しました。 – TheRandomBeast1
'私はgetLocationを更新しました。 ()とgetHeight() - 元のImage(投稿されたコードからはっきりしない)とサイズが再度異なる場合があります。なぜあなたはスケールする必要がありますか? – copeg