下記のコードなのですが playerにmusiが当たっても判定されません いろいろと試したのですがいじるとエラーが出ます どうすれば判定されますか? package jp.example.musitori; import android.view.View; import android.content.Context; import android.graphics.Canvas; //プレイヤー画像を表示するとき import android.annotation.SuppressLint; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; //タップでプレイヤーを動かすとき import android.view.MotionEvent; public class GameView extends View { //背景画像を格納する変数 private Bitmap bgImage; //アニメーションフレーム private int frameIndex = 0; //プレイヤー系 //プレイヤー画像を格納する変数 private Bitmap player; //プレイヤーのX,Y座標 private int playerX = -50; private int playerY = -50; //プレイヤーの上昇量 private int playerVY; //虫の描画 private Bitmap[] musi = new Bitmap[2]; //虫のX,Y座標 private int musiX = 900; private int musiY = 0; //虫の移動量 private int musiVX = -20; //画面(Canvas)中央のX,Y座標 private int canvasCX; private int canvasCY; //コントラクタ public GameView(Context context) { super(context); //プレイヤー系 //リソースオブジェクトを作成 Resources res = this.getContext().getResources(); //背景画像をBitmapに変換して変数bgImageにぶち込む bgImage = BitmapFactory.decodeResource(res, R.drawable.bg); //虫画像をBitmapに変換して変数musiにぶち込む musi[0] = BitmapFactory.decodeResource(res, R.drawable.musi1); musi[1] = BitmapFactory.decodeResource(res, R.drawable.musi2); //プレイヤー画像をBitmapに変換して変数playerにぶち込む player = BitmapFactory.decodeResource(res, R.drawable.ami1); } @SuppressLint("DrawAllocarion") @Override public void onDraw(Canvas canvas){ //プレイヤー系 //画面(Canvas)中央のX,Y画像 canvasCX = canvas.getWidth() / 2; canvasCY = canvas.getHeight() / 2; //画面(Cancas)サイズに応じて背景画像を拡大 bgImage = Bitmap.createScaledBitmap(bgImage, canvas.getWidth() * 2, canvas.getHeight(), true); //playSceneメソッドを実行 playScene(canvas); } //playSceneメソッド public void playScene(Canvas canvas){ //画面(Cancas)に背景画像を描画 canvas.drawBitmap(bgImage, 0, 0, null); //虫のスクロール処理 //座標をmusiVXずつ移動 musiX += musiVX; //画面から全体が消えたら if(musiX < -musi[0].getWidth() || hitCheck()){ //また右から musiX = canvas.getWidth(); //高さは画面上半分のランダムな位置 musiY = (int)Math.floor(Math.random() * canvasCY); } //画面に虫を描画 if(frameIndex > 1) frameIndex = 0; canvas.drawBitmap(musi[frameIndex++], musiX, musiY, null); //プレイヤーの初期X,Y座標 playerX = canvasCX - player.getWidth() / 2; //playerY = canvasCY - player.getHeight() / 2; playerY +=playerVY; //はみ出さないように if(playerY < 0)playerY = 0; //プレイヤーを下降 playerVY += 4; //元の位置より下に行かないように if(playerY > canvasCY) playerY = canvasCY; //画面(Canvas)にプレイヤーを描画 canvas.drawBitmap(player, playerX, playerY, null); } //タッチイベント public boolean onTouchEvent(MotionEvent me){ //タッチされたら if(me.getAction() == MotionEvent.ACTION_DOWN){ //プレイヤーの上昇値を設定 playerVY = -20; } return true; } //あたり判定 public boolean hitCheck(){ if(playerX < musiX && (playerX + player.getWidth()) > musiX && playerY < musiY && (playerY + player.getHeight()) > musiY){ return true; }else{ return false; } } }
↧