如何使用 Arcade 模組製作動畫物件?


介紹

Python 的 Arcade 模組允許使用者建立互動式動畫。它具有簡單直觀的文件,可用於製作互動式遊戲,其面向物件的架構使處理動畫物件變得簡單。

使用 Arcade 模組製作精彩的動畫

Python 中的 Arcade 模組是一個用於建立 2D 影片遊戲的 Python 庫,可以透過 pip 安裝 arcade 包輕鬆安裝。要在您的 Python 專案中使用 Arcade,您需要透過在終端執行命令 **“pip install arcade”** 來安裝 Arcade 外部依賴項。

讓我們來看一下這個 Python 包的兩個奇妙用途。

  • 使用 arcade 建立一個 2D 橫版遊戲。您可以使用內建的精靈和動畫工具建立一個能夠在滾動世界中行走、跳躍平臺和收集金幣的英雄角色。Arcade 的碰撞檢測功能還可以用於跟蹤遊戲英雄角色和其他物件(如敵人或物品)之間的互動。

  • 使用 Arcade 進行 2D 動畫。內建的 draw text 和 draw sprite 方法允許您建立一個場景,其中包含可以相互互動的移動角色。使用 Arcade 中的 draw circle 和 draw rectangle 方法,您可以建立其他元素,例如背景場景。

演算法

讓我們開始使用 Arcade 建立雷達動畫!首先,按照上述說明安裝 Arcade 模組。完成此操作後,我們可以保持簡單並開始製作動畫。

  • 將螢幕的寬度、高度、標題、中心 x、中心 y、每幀弧度和掃描長度設定為常量。

  • 建立一個具有三個函式的 Radar 類:init、update 和 draw。在 init 函式中將掃描的角度設定為 0。

  • 在 update 函式中,將掃描的角度增加每幀的弧度數。

  • 在 draw 函式中,使用數學、掃描長度以及中心的 x 和 y 座標計算掃描的終點。

  • 從中心 x 和中心 y 座標開始,繪製一條到掃描終點的雷達線。

  • 使用 60 個線段和 10 的邊框寬度建立雷達的形狀。

  • 使用 init、update 和 draw 函式建立 MyGame 類。在 init 方法中建立一個 Radar 物件並將背景顏色設定為黑色。

  • 在 update 函式中呼叫 Radar 物件的 update 方法。

  • 在 draw 函式中清除螢幕,然後呼叫 Radar 的 draw 函式。

示例

import arcade
import math

# Height, Width and Title of Animation Window
ARCADE_WIDTH = 1000
ARCADE_HEIGHT = 700
ANIMATION = "Arcade Animation - Radar"

# Constants to determine position of the radar on the window/canvas
CENTER_X = ARCADE_WIDTH // 2
CENTER_Y = ARCADE_HEIGHT // 2
RPM = 0.01
SWEEP = 200
class Radar:
   def __init__(self):
      self.angle = 0
   def update(self):

      # Update the angle based on the RPM (will be 0, 360)
      self.angle += RPM
   def draw(self):

      # Setting the sweeping radar line using math module
      x = SWEEP * math.sin(self.angle) + CENTER_X
      y = SWEEP * math.cos(self.angle) + CENTER_Y

      # Start rendering before any draw methods.
      arcade.start_render()

      # Line to be animated
      arcade.draw_line(CENTER_X, CENTER_Y, x, y, arcade.color.YELLOW, 4)

      # Decorate the line border/outline
      arcade.draw_circle_outline(CENTER_X,CENTER_Y,SWEEP,arcade.color.BLUE_SAPPHIRE,border_width=15,num_segments=60)
class MyGame(arcade.Window):
   """ Main application class. """
   def __init__(self, width, height, title):
      super().__init__(width, height, title)

      # Create our rectangle and set canvas background color
      self.radar = Radar()
      arcade.set_background_color(arcade.color.BLACK)
   def on_update(self, delta_time):
      self.radar.update()
   def on_draw(self):

      # Clear screen and draw the rectangle
      self.clear()
      self.radar.draw()
def main():
   MyGame(ARCADE_WIDTH, ARCADE_HEIGHT, ANIMATION)
   arcade.run()
if __name__ == "__main__":
   main()

讓我們檢查一下上面雷達動畫程式碼中發生了什麼。

  • 常量 **ARCADE_WIDTH**、**ARCADE_HEIGHT** 和 **ANIMATION** 用於設定程式的常量。它們確定動畫的視窗大小。

  • 常量 **CENTER_X**、**CENTER_Y**、**RPM** 和 **SWEEP** 用於控制雷達的細節。可以把它想象成將雷達放置在畫布上。

  • Radar 類用於建立和繪製雷達。**__init__**() 方法用於定義雷達的角度,最初設定為 0。**update**() 和 **draw**() 方法分別用於更新和繪製雷達。**update**() 方法用於透過將 **RPM** 新增到 **self.angle** 來移動掃描的角度。**draw**() 方法使用 math 模組計算雷達掃描的終點,然後繪製雷達線和雷達的輪廓。

  • **MyGame** 類用於建立主應用程式類。它繼承了 Arcade 模組的 Window 類。**__init__**() 方法用於建立矩形、設定畫布背景顏色並呼叫 Radar 類來建立雷達。**on_update**() 方法用於更新雷達,**on_draw**() 方法用於清除螢幕並繪製雷達。

  • **main**() 方法用於呼叫 **MyGame** 類,**arcade.run()** 方法用於執行程式。

  • **if __name__ == "__main__":** 語句用於檢查程式碼是否直接執行而不是匯入。

結論

總的來說,Arcade 模組是建立動態互動式動畫的絕佳工具。憑藉其簡單直觀的文件、面向物件的架構和程式碼示例,使用 Arcade 製作動畫物件是一個簡單的過程。

更新於:2023年3月24日

324 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.