public void set(float x, float y, float vx, float vy) { // if( y < -RatioAdjustment.MalletD() ){ vec.set(-vx, -vy); float angle = GeneralCalc.RadToDegree(vec.getAngle()); Log.d("set", "koko set ( " + x + ", " + y + ", " + angle); cir.set(x, y, cir.getR()); dst.set( cir.getDrawX(), cir.getDrawY(), cir.getDrawX() + packimg.getWidth(), cir.getDrawY() + packimg.getHeight()); // 向きに合わせて回転 matrix.setRotate(angle); zimg = Bitmap.createBitmap(packimg, 0, 0, packimg.getWidth(), packimg.getHeight(), matrix, true); src.set(0, 0, zimg.getWidth(), zimg.getHeight()); clientflag = true; // // } }
@Override public boolean onUpdate() { if (!clientflag) { Circle nc = new Circle(cir.getX() + vec.getX(), cir.getY() + vec.getY(), cir.getR()); // 自分のマレットとの接触判定 int n = parent.CountMallet(); for (int i = 0; i < n; i++) { if ((check_mallet_state & (1 << i)) > 0) { Mallet m = parent.GetMallet(i); Circle mc = m.getCircle(); if (GeneralCalc.CheckCircleInCircle(nc, mc)) { float rad = GeneralCalc.CircleToCircleAngle(mc, nc); float force = GeneralCalc.CircleInCircleSize(nc, mc); force = force > 12f ? 12f : force; vec.setF(GeneralCalc.CircleInCircleSize(nc, mc), rad); // Log.d("setF","mc:: ("+mc.getX()+","+mc.getY()+") nc:: // ("+nc.getX()+","+nc.getY()+") angle = "+GeneralCalc.RadToDegree(rad)); nc.setX(nc.getX() + vec.getX()); nc.setY(nc.getY() + vec.getY()); break; } } } // 左端チェック if (GeneralCalc.CheckCircleRefLeft(nc)) { nc.setX(2 * refl - (nc.getX() - nc.getR())); vec.revX(); } // 右端チェック if (GeneralCalc.CheckCircleRefRight(nc)) { nc.setX(2 * refr - (nc.getX() + nc.getR())); vec.revX(); } cir.set(nc); int dx = cir.getDrawX(), dy = cir.getDrawY(); // Log.d("dx dy","dx = "+dx+" dy = "+dy+" angle = " + // GeneralCalc.RadToDegree(vec.getAngle())); dst.set(dx, dy, dx + packimg.getWidth(), dy + packimg.getHeight()); // 向きに合わせて回転 tmpAngle = GeneralCalc.RadToDegree(vec.getAngle()); matrix.setRotate(tmpAngle); zimg = Bitmap.createBitmap(packimg, 0, 0, packimg.getWidth(), packimg.getHeight(), matrix, true); src.set(0, 0, zimg.getWidth(), zimg.getHeight()); } if (cir.getY() > RatioAdjustment.GoalY()) { parent.gameEnd(); parent.setLose(); } else if (cir.getY() >= RatioAdjustment.PackR()) { mineflag = true; } else if (mineflag && cir.getY() < RatioAdjustment.PackR()) { parent.setSendStart(); mineflag = false; } clientflag = false; check_mallet_state = 0; return true; }