Как программист, вы должны иметь очень четкую концепцию того, как вы будете абстрагировать идею макроса вашей игры в отдельные, выполнимые компоненты, чтобы при задании вопросов о StackOverflow или других компонентах они были более строки «Как определить угол падения между осью X и линией, сгенерированной точкой, по которой пользователь щелкает, и центральным положением моего спрайта из бутылки», а не «Как построить игру?». Как вы можете обнаружить (возможно, нет, если я неверно оцениваю ваш вопрос), предстоит проделать большую работу.
Моя рекомендация, если вы хотите ускорить разработку, - это использовать существующую среду, а не переписывать большую часть базового кода самостоятельно (например, Cocos2D для Android ), а затем использовать такие концепции, как Вышеупомянутый, чтобы выполнить функциональность, которую вы ищете:
Вам все еще придется исследовать такие темы, как загрузка графики и рисование их на экране + получение пользовательского ввода.
В качестве альтернативы, в зависимости от того, насколько сложным должно быть ваше приложение, вы можете просто загрузить свой спрайт в виде изображения и затем использовать матрицу для его поворота:
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.os.Bundle;
import android.widget.ImageView;
public class TestImages extends Activity {
private float ANGLE = 30;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView image = (ImageView) findViewById(R.id.test_image);
Bitmap bMap = BitmapFactory.decodeResource(getResources(), R.drawable.bottle);
Matrix mat = new Matrix();
// Realistically, you would be computing angle using technique
// similar to the links I posted, and you would want this to be
// updated every frame or every time a 'drag' event occurred, rather
// than just once when the app started
mat.postRotate( ANGLE );
Bitmap bMapRotate = Bitmap.createBitmap(bMap, 0, 0, bMap.getWidth(), bMap.getHeight(), mat, true);
image.setImageBitmap(bMapRotate);
}
}