Major Softwares

  INDEX PAGE

  1. 簡介
  2. Java, Android和LibGDX好書推介
  3. Java, Android和LibGDX要學的知識
  4. 用Windows寫Java程式
  5. 用Eclipse寫Java程式
  6. 用Eclipse寫Android程式
  7. 用Eclipse寫LibGDX程式
  8. Standard Java Naming Conventions
  9. System.out.println()的用法和意思
  10. Where is main() method in Android?

LibGDX - Splash & Menu Screen

  1. LibGDX: World, Texture, Background, Camera, Viewport, Screen & OpenGL
  2. LibGDX: Texture, TextureRegion, SpriteBatch & Sprite
  3. UML(Unified Modeling Language): Class Diagram
  4. Type Casting, Upcasting & Downcasting
  5. @Override的用法和意思
  6. LibGDX: Scene2d & Graphical User Interface(GUI)
  7. LibGDX: Splash Screen
  8. LibGDX: Texture Packer
  9. LibGDX: BitmapFonts, JSON & Skin
  10. Android: R.java File
  11. Android: onClick事件的5種實現方式
  12. LibGDX: Game Menu Screen
  13. LibGDX: Advanced Game Menu Screen (using Abstract Screen)
  14. LibGDX: Disposable Interface
  15. Java & LibGDX: super keyword
  16. LibGDX: Advanced Game Menu Screen (using AssetManager)
  17. Java: Array, Arrays, List, ArrayList & LibGDX: Array
  18. LibGDX: File I/O (Preferences)
  19. LibGDX: Game Level Selection Screen
  20. LibGDX: Advanced Game Level Selection Screen (using AssetManager)

LibGDX - Tiled 2D Platform Game

  1. LibGDX: Lifecylce (Render() Method)
  2. LibGDX: Delta Time
  3. LibGDX: Animation & Spritesheet
  4. LibGDX: Keyboard, Mouse & Touch Screen Control
  5. Input Control (Polling VS Event Driven Input)
  6. LibGDX: Tiled (Background and Foreground)
  7. LibGDX: Jumping Action
  8. LibGDX: Tiled (Collision Detection)
  9. LibGDX: Tiled (Bullet Class)
  10. LibGDX: Audio (Sound & Music)
  11. LibGDX: Tiled (Scrollable Background with Camera & HUD)
  12. LibGDX: WorldController & WorldRenderer Class

LibGDX/Java - Card Game No.1 - Blackjack

  1. LibGDX: Install & Setup Android Studio IDE
  2. LibGDX: Use Android Studio to Run Java Hello World
  3. LibGDX: Use Android Studio to Run LibGDX Hello World
  4. Adobe Illustrator: Basic Components Part 1
  5. Adobe Illustrator: Basic Components Part 2
  6. Adobe Illustrator: BlackJack Table & Cards
  7. LibGDX: Blackjack Animation
  8. LibGDX: Interpolation
  9. Java: toString() Method
  10. Java: Blackjack Shuffle Methods
  11. LibGDX: Blackjack Shuffle Method
  12. Java: Blackjack Card Game

LibGDX - Others

  1. Making and Displaying App Icon
  2. LibGDX: Displaying Traditional and Simplified Chinese Characters
  3. LibGDX: Handling Different Screen Resolutions

Unity Game Engine & C#

  1. Visual Studio: C# Hello World
  2. Unity: C# Hello World
  3. Unity: Handling Different Screen Resolutions
  4. Unity: Life Cycle
  5. Unity: StartCoroutine, StopCoroutine, IEnumerator & Yield
  6. Unity: Splash Screen
  7. Unity: Fonts, Traditional and Simplified Chinese Characters
  8. Unity: GameObject, Class Object, new & Instantiate
  9. Unity: Start Screen with Glowing Animated Button
  10. Unity: C# Get & Set Modifier
  11. Unity: Delegates & Events
  12. Unity: File I/O, Read & Write Text File & PlayerPrefs
  13. Unity: Game Level Selection Screen
  14. Unity: Game Menu Screen & ScreenManager
  15. Unity: Encrypt and Decrypt Text File
  16. Unity: Options Menu Screen
  17. Unity: Convert Numbers Image to Custom Font

Unity - Card Game No.1 - Blackjack

  1. Unity: Blackjack Card Game - Part 1 (Full Game)
  2. Unity: Blackjack Card Game - Part 2
  3. Unity: Blackjack Card Game - Part 3
  4. Unity: Blackjack Card Game - Part 4
  5. Unity: Blackjack Card Game - Part 5
  6. Unity: Blackjack Card Game - Part 6
  7. Unity: Blackjack Card Game - Part 7

以下是預告-Coming soon!


Secret Weapon No.1

  1. Unity: Card Game No.2

Advanced Programming

  1. Unity: GPS Programming
  2. Unity: User Login System
  3. Unity: Augmented Reality (AR)

Secret Weapon No.2

  1. Unity: GPS & AR Application

第41節 - LibGDX: Tiled (Scrollable Background with Camera & HUD)

這一節我會介紹LibGDX遊戲的Scrollable Background with Camera & Head-up Display(HUD),所謂HUD簡單代表一隻遊戲內的分數和生命值(Scores & Lives)等等,我會在這節詳細介紹。

以下重溫上幾節的內容:

  1. 第36節 - LibGDX: Tiled Map Editor (Background & Foreground)介紹用Tiled Map Editor來製作一個2D遊戲(2D Platformer Game)的背景。
  2. 第37節 - LibGDX: Jumping Action介紹Jumping Action。
  3. 第38節 - LibGDX: Tiled (Collision Detection)介紹過如何利用Tiled Map Editor製造碰撞效果。
  4. 第39節 - LibGDX: Tiled (Bullet Class)介紹Bullet Class,則是加入發射子彈的方法。
  5. 第40節 - LibGDX: Audio(Sound & Music)介紹加入背景音樂和發射子彈的音效。

執行結果:

以下是 LibGDX: Tiled (Scrollable Background with Camera & HUD)程式執行的結果:


Scrollable Background with Camera

以下是3D構圖:

LibGDX: Tiled (Scrollable Background with Camera & HUD)
  1. 建立一張全新Tiled Map,但這張Tiled Map的大小要比屏幕長一倍,則2048px X 768px。

  2. 建立一個camera物件,並設定viewport大小相等於屏幕大小,則1048px X 768px。

  3. 要做到camera跟隨屏幕左右移動,其實很簡單,只要把camera的X Position設定為主角hero1的X Position就可以,則camera.position.x = position.x;

  4. 最後,用setView()方法,把camera設定在tiled Map內,並把tiled Map的Layer(background、foreground和upperlayer)顯示在屏幕上。

Head-up Display (HUD) - Scores & Lives

要把遊戲分數和主角hero1的生命數量(Scores & Lives)顯示在屏幕上,但又不會跟隨屏幕左右移動,其實很簡單,只要把HUD顯示在另一個屏幕上就可以:

以下是3D構圖:

LibGDX: Tiled (Scrollable Background with Camera & HUD)
  1. 建立一張全新Tiled Map,但這張Tiled Map的大小要比屏幕長一倍,則2048px X 768px。

  2. 建立一個camera物件,並設定viewport大小相等於屏幕大小,則1048px X 768px。

  3. 要做到camera跟隨屏幕左右移動,其實很簡單,只要把camera的X Position設定為主角hero1的X Position就可以,則camera.position.x = position.x;

  4. 最後,用setView()方法,把camera設定在tiled Map內,並把tiled Map的Layer(background、foreground和upperlayer)顯示在屏幕上。

  5. 最後,建立一個新的SpriteBatch物件(HUDBatch),再建立一個BitMapFont物件(font1)和建立三個Sprite物件(spriteHero1、 spriteHero2和spriteHero3),最後把它們顯示在新一層屏幕上。

2) MyDemo41.java新加入部分

以下部分會列出在MyDemo41.java程式新加的部分,如下圖:

LibGDX: Tiled (Scrollable Background with Camera & HUD)
  1. 建立HUDBatch、font1、SpriteHero1、SpriteHero2和SpriteHero3變數(Variable)。

  2. 在create()方法內建立SpriteBatch物件(HUDBatch)。

  3. 再在create()方法內建立BitMapFont物件(font1),並設定font1的顏色為黃色。

    再在create()方法內設定SpriteHero1、SpriteHero2和SpriteHero3的圖片、位置和大小。

  4. 最後,用新建立的SpriteBatch物件(HUDBatch)內,把font1、spriteHero1、 spriteHero2和spriteHero3顯示在新一層屏幕上。

  5. 別忘記呼叫dispose()方法,執行HUDBatch.dispose();和font1.dispose(); 釋放資源。

LibGDX程式

DesktopLauncher.java

LibGDX: Tiled (Scrollable Background with Camera & HUD)
  1. DesktopLauncher是PC Desktop的Starter Class,我們在DesktopLauncher內設定顯示的大小為1024 X 768 px。

LibGDX: Tiled (Scrollable Background with Camera & HUD)
  1. 把新的Tiled Map (map.tmx和tilemap.png)儲存到Android的Assets文件夾內(/map/...)。

Bullet.java

LibGDX: Tiled (Scrollable Background with Camera & HUD)
  1. 首先在Bullet類別的Constructor內,把bulletPosition和bulletVelocityX傳入。

    bulletPosition就是主角hero1的子彈發射位置。

  2. 建立一個update()方法,把子彈的位置加上bulletVelocityX傳入的數值。

BackgroundSound.java

LibGDX: Tiled (Scrollable Background with Camera & HUD)
  1. 首先在BackgroundSound類別的Constructor內,把bgsound1.mp3傳入Sound物件(sound)內。

  2. 建立一個playSound()方法,用sound.loop()方法重複播放背景音樂,音量是0至1,0.5f代表設定音量為一半。

GunSound.java

LibGDX: Tiled (Scrollable Background with Camera & HUD)
  1. 首先在GunSound類別的Constructor內,把gun1.mp3傳入Sound物件(sound)內。

  2. 建立一個playSound()方法,用sound.play()方法播放發射子彈音效,音量是0至1,0.5f代表設定音量為一半。

    注意,發射子彈音效不須要重複播放,所以我們不用sound.loop()方法。

MyDemo41.java

LibGDX: Tiled (Scrollable Background with Camera & HUD)
  1. 建立HUDBatch、font1、SpriteHero1、SpriteHero2和SpriteHero3變數(Variable)。

  2. 在create()方法內建立SpriteBatch物件(HUDBatch)。

  3. 再在create()方法內建立BitMapFont物件(font1),並設定font1的顏色為黃色。

    再在create()方法內設定SpriteHero1、SpriteHero2和SpriteHero3的圖片、位置和大小。

  4. 最後,用新建立的SpriteBatch物件(HUDBatch)內,把font1、spriteHero1、 spriteHero2和spriteHero3顯示在新一層屏幕上。

  5. 別忘記呼叫dispose()方法,執行HUDBatch.dispose();和font1.dispose(); 釋放資源。

執行程式:

LibGDX: Tiled (Scrollable Background with Camera & HUD)

以下是LibGDX: Tiled (Scrollable Background with Camera & HUD)程式執行的結果:


Download above code and sample pictures here!