С днем победы!
Сегодня код Demon’s Cave для Android выходит на GitHub:
https://github.com/demensdeum/DemonsCaveAndroid
У меня сейчас нет времени для записи видео, поэтому здесь короткая текстовая версия туториала.
Вообще вы можете скачать код игры Demon’s Cave и собрать на своей машине.
Сегодня мы будет выводить лого компании Demens Deum на движке Rajawali (OpenGL-ES 2.0)
1. Скачайте Demens Deum лого
http://demensdeum.com/games/demonsCave/data/graphics/demensdeumLogo.png
2. Установите Gimp и поверните картинку по горизонтали
sudo apt-get install gimp
3. Добавляем вывод активити на полный экран девайса
Добавьте этот код в метод onCreate класса MainActivity.java
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); requestWindowFeature(Window.FEATURE_NO_TITLE);
Добавьте/замените настройки res/values/styles.xml
<resources> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/colorPrimaryitem> <item name="colorPrimaryDark">@color/colorPrimaryDarkitem> <item name="colorAccent">@color/colorAccentitem> <item name="android:windowNoTitle">trueitem> <item name="android:windowActionBar">falseitem> <item name="android:windowFullscreen">trueitem> <item name="android:windowContentOverlay">@nullitem> <style> <resources>
4. Инициализируем двухмерную камеру Camera2D
Добавляем приватное поле Camera2D в класс Renderer.class
import org.rajawali3d.cameras.Camera2D;
Добавляем метод инициализации камеры Camera2d
protected void initializeCamera() { gameCamera = new Camera2D(); getCurrentScene().addCamera(gameCamera); getCurrentScene().switchCamera(gameCamera); }
5. Добавляем примитив плоскость (Plane) с картинкой demensdeum_logo.png
Добавляем приватное поле Plane в класс Renderer.java
private Plane plane;
Добавляем метод инициализации Plane
protected void initializePlane() { Material material = new Material(); material.enableLighting(false); material.setDiffuseMethod(new DiffuseMethod.Lambert()); material.setColor(0); Texture earthTexture = new Texture("Earth", R.drawable.demensdeum_logo); try{ material.addTexture(earthTexture); } catch (ATexture.TextureException error){ Log.d("DEBUG", "TEXTURE ERROR"); } plane = new Plane(1, 1, 2, 2); plane.setPosition(0,0,0); plane.setMaterial(material); }
Меняем код инициализации сцены
@Override protected void initScene() { initializeCamera(); initializePlane(); getCurrentScene().addChild(plane); getCurrentCamera().setZ(200.2f); }
6. Добавляем demensdeum_logo.png в res/drawable папку
7. Собираем-проверяем на вашем Android девайсе
Вы должны увидеть картинку – логотип компании Demens Deum, если она будет по горизонтали зеркальная – поверните ее в Gimp сначала.
Продвинутые пользователи могут ничего не зеркалить, вам стоит попробовать использовать самую последнюю версию Rajawali, некорректные текстурные координаты для Plane это известная проблема старых версий.
Спросите меня, если у вас есть вопросы, и если нет тоже.