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

第32節 - LibGDX: Delta Time

這一節我會介紹LibGDX的Delta Time。

我在第31節 - LibGDX: Lifecycle (Render() Method)介紹過LibGDX的render()方法,它會不斷循環執行,一秒30至80次(通常60 Frame per Second, FPS),根據手機硬件速度而正。

要解決以上速度問題,我們可以用LibGDX的Gdx.graphics.getDeltaTime(),它可以敢得兩格(two frames)動畫之間的時間,用來控制動畫的速度,我會詳細介紹。

LibGDX - Delta Time
  1. xPosition = xPosition + (speed*deltaTime); 是依靠時間的(Time dependent),deltaTime在60FPS會是30 FPS的一半,所以動畫的速度不會受手機硬件速度影響。

    60 FPS - 150 x 0.01667s x 60次 = 150。

    30 FPS - 150 x 0.03333s x 30次 = 150。

    結果相同!

速度方程式 (Velocity Equation)

以下是Velocity, Distance & Time的數學方程式,圖片(hero1.png)的速度(velocity)=距離(distance)/時間(time),如下圖:

LibGDX - Delta Time

距離方程式(Distance Equation)

要找出圖片(hero1.png)的新位置,我們可以用以下數學方程式,圖片(hero1.png)的新位置=舊距離+移動距離,如下圖:

LibGDX - Delta Time

電腦方程式1 (Computational Equation No.1) - Time Independent

用電腦程式計算新距離,可以用以下方法:

LibGDX - Delta Time

注意,deltaD=5;代表每次把距離增加5px,數值越大代表移動越快,所以很多時會簡化用"Speed"代替,不過"Speed"的單位不是"速率",而是與"distance"一樣(例如: pixel, px),如下圖:

LibGDX - Delta Time

電腦方程式2 (Computational Equation No.2) - Time Dependent

要解決以上速度問題,我們可以用LibGDX的Gdx.graphics.getDeltaTime(),它可以敢得兩格(two frames)動畫之間的時間,用來控制動畫的速度,如下圖:

LibGDX - Delta Time
  1. xPosition = xPosition + (speed*deltaTime); 是依靠時間的(Time dependent),deltaTime在60FPS會是30 FPS的一半,所以動畫的速度不會受手機硬件速度影響。

    60 FPS - 150 x 0.01667s x 60次 = 150。

    30 FPS - 150 x 0.03333s x 30次 = 150。

    結果相同!

例子1 - 30FPS (Time Independent)

例子1沒有用到deltaTime變數,所以動畫的速度會根據手機硬件速度而正,最後行了150px

LibGDX - Delta Time

例子2 - 60FPS (Time Independent)

例子2沒有用到deltaTime變數,所以動畫的速度會根據手機硬件速度而正,例子2會是例子1的兩倍,最後行了300px

LibGDX - Delta Time

例子3 - 30FPS (Time Dependent)

例子3用到deltaTime變數,所以動畫的速度不會根據手機硬件速度而正,最後行了150px

LibGDX - Delta Time

例子4 - 60FPS (Time Dependent)

例子4用到deltaTime變數,所以動畫的速度不會根據手機硬件速度而正,例子4和例子3的速度相同,最後行了150px

LibGDX - Delta Time