日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

love2d之路(三)一个简易弹幕射击游戏示例(上)

發布時間:2024/3/26 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 love2d之路(三)一个简易弹幕射击游戏示例(上) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一節實現了人物的移動

?

這一節為人物加入“射擊彈幕”這個功能

?

這里需要加入一個緩動庫flux

?

需要的自取:flux緩動庫

?

那么開始:

?

1.先思考要實現什么效果

這里取巧,先不弄太復雜的

開始畫好20個彈幕,全部隱掉,按下射擊鍵,彈幕1的位置設置到人物的位置上,播放彈幕1的緩動動畫,再次按下射擊鍵,彈幕2的位置設置到人物的位置上,播放彈幕2的緩動動畫,循環,到第21彈幕的時候減去20回到第一個彈幕

?

2.開始寫代碼了

先寫一個克隆方法:

clone = function(t)local c = {}for i, v in pairs(t) doif v thenif type(v) == 'table' then c[i] = clone(v)else c[i] = v endendendreturn setmetatable(c, getmetatable(t))end

寫一個彈幕對象,基本的屬性,克隆20個彈幕到一個表里

function love.load()t = 1--記錄當前發射的彈幕local bullet = {x = -100,y = -100,w = 8,h = 8,speed = 40,image = love.graphics.newImage("res/ball.png"),show = false,isShoot = false}bullets = {}--存放20個子彈對象for i = 1, 20 dolocal ii = clone(bullet)table.insert(bullets, ii)endend

把20個彈幕全部畫出來

function love.draw()init()endfunction init()love.graphics.setColor(255, 0, 0, 255)for i, v in pairs(bullets) dodrawBullet(v)endendfunction drawBullet(v)love.graphics.draw(v.image, v.x, v.y, 0, 1, 1, 32, 32)end

完成射擊功能,然后在鍵盤偵聽加入這個方法,按下j鍵射擊

function shoot()--每次射擊使用下一個對象,第21個則循環回到1t = t + 1if t > 20 then t = t - 20 endbullets[t].show = truebullets[t].x = player.xbullets[t].y = player.ybullets[t].isShoot = trueflux.to(bullets[t], 1, { x = bullets[t].x + 30 * bullets[t].speed })endfunction love.keyreleased(key)if key == "j" thenshoot()endend

?

最后,結合上一節的功能給出完整的一個示例

彈幕射擊游戲示例(一)

總結

以上是生活随笔為你收集整理的love2d之路(三)一个简易弹幕射击游戏示例(上)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。