背景a. 首先,我們看到背景好像是一張無限長的在向下移動。實際則不然,這是一張頂部和底部剛好重疊的。這是一種節省資源討巧的做法,然後繪製的時候同時繪製兩張剛好拼接在一起,下面我們畫一張圖來形象的說明。
c. 下面紅色的框代表螢幕顯示的區域,就飛機大戰的情況我們將背景圖的初始狀態設定如下:
e. 最後移動到最頂部的時候重置到最初的狀態,這樣就實現了背景圖的無限迴圈。這是2d遊戲中常用的背景圖技巧。
物體移動
遊戲中敵人的移動和子彈的移動還有玩家自身機體的移動我們統一稱為物體的移動。
先來看敵人和子彈的移動,這實際上就是一張在螢幕上豎直方向上移動。然後不斷重新整理位置,人眼看到就像是在移動一樣。
邊緣檢測
玩家操控的機體我們要控制它在螢幕內,超出螢幕外就會很奇怪,所以這裡要做以下邊緣檢測,當玩家移動到螢幕外時限制到螢幕邊緣無法往邊緣外移動。
碰撞檢測
遊戲中我們看到,子彈打中敵人的時候就代表了消滅敵人,什麼情況下才是打中了敵人呢?當子彈和敵人機體碰撞的時候即代表打中了敵人。如何判斷子彈打中了敵人?這裡我們用一種較為簡單的方法判斷,旨在說明碰撞檢測原理。
我們假設敵人飛機在螢幕上是乙個放快,子彈也是乙個方塊。這兩個方塊在螢幕上都有絕對座標,當這兩個方塊的區域有重合的時候即發生了碰撞。這樣碰撞檢測就很容易做,即判斷兩個矩形的區域是否重合即可。以上就是所謂的碰撞檢測。
微信小遊戲2
建立畫布 const canvas wx.createcanvas 在 game.js 中輸入以上 並儲存 外鏈轉存失敗 img raz17njs 1564146105342 橫向居中 外鏈轉存失敗 img uk8ya6v8 1564146105344 context.fillrect canvas...
2D遊戲開發(2)
每次給遊戲新增新功能時,通常也會引入一些新設定。為了讓所有的設定進行統一管理,我們可以配置乙個名為 setting的模組,這個模組中包含乙個setting的類,用來儲存所有的設定。usr bin env python3.5 filename setting 儲存所有的設定 class setting...
2D遊戲開發(1)
外星人入侵 通過pygame,入門python的2d遊戲開發過程,通過教材製作乙個打外星人遊戲。1 函式 run game import sys import pygame def run game 初始化遊戲,並建立乙個螢幕物件 pygame.init screen pygame.display....