使用Laya引擎開發微信小遊戲(下)

2022-09-15 03:12:10 字數 2894 閱讀 7388

本文由雲+社群發表

在src目錄下建立乙個新目錄role,用來存放遊戲中角色。 在role裡建立乙個傘兵soldier.ts物件檔案。

module role    

init():void}}

修改gamepage.ts,把傘兵加入到遊戲主畫面中去,重點看rendersoldier()

module view

init():void

rendersoldier():void}}

執行起來看下,發現遊戲主畫面上,已經多了乙個傘兵(請忽略我的很爛的摳圖,手動捂臉^_~ )

相比起來,requestanimationframe 效能更高,更適合做動畫。但是在遊戲裡會有很多地方都用到定時器,如何管理那麼多定時器,是非常讓人頭疼的事情。所以laya也提供了自己的定時器的相關實現:laya.timer來簡化定時器的使用,這個定時器同樣是基於幀率的,我們來看看這個怎麼用。

修改gamepage如下,重點看laya.timer.frameloop

module view

init():void

rendersoldier():void

onloop():void}}

來看下效果,看起來還不錯

下一步,就改是大炮打傘兵了,當然首先得給大炮建立乙個炮彈。 ball.ts

module role    

init():void}}

在gamepage上新增炮彈

renderball():void
嗯,炮彈新增成功,不過,貌似有點問題,怎麼炮彈顯示層級在大炮上面了?似乎有點難看?

還記得前端世界裡神奇的z-index嗎? laya也有,叫zorder。調整zorder的數值,可以調節sprite的層次(脫了馬甲,我一樣認識你,_) 把渲染炮彈部分改一下層級:

renderball():void
這次炮彈躲在大炮後面去了,一會兒再讓他出來吧!

炮彈向上飛,就和傘兵向下掉一樣,在幀迴圈裡不斷修改y值就可以。但是這次,我們要響應事件了,必須點選大炮,觸發點選事件後,才發射炮彈。

再次修改gamepage.ts,這次的重點是多了this.pao.on(laya.event.mouse_down,this,this.onmousedown);這個事件監聽

module view

init():void

rendersoldier():void

renderball():void

onmousedown():void

onloop():void}}

}

在執行一下看看:

到目前為止,還進行得不錯,就差擊落傘兵了,可憐的傘兵,你的死期就要到了,還差乙個碰撞了。

碰撞演算法常見的有以下這些:

圓形碰撞:和矩形類似,比如炮彈就是圓的,用圓形檢測,更適合真實情況。

多矩形碰撞:如果影象相對比較複雜,可以拆分為多個矩形,在準確性和效能方面取得平衡。

畫素檢測碰撞:如果需要非常精確的碰撞,就要使用畫素檢測了,這個效能相對就比較低了。

在laya裡,對於矩形碰撞檢測,提供了rectangle.intersection()方法,可以非常方便的進行矩形檢測。

繼續修改gamepage.ts

gameover():void

onloop():void}}

再來看下效果:

boom,傘兵成功被大炮打中,「絕地求死」完美收工!

laya已經內建了效能監測工具,只要初始化後執行laya.stat.show();就可以開啟

上面清楚的顯示了目前的fps、sprite的數量、drawcall 、記憶體消耗等,我們優化的目標就是把這些值降低下來。

具體的優化手段有很多,大家可以在具體的業務開發中不斷的總結提煉。

點選

當然可以,用laya.browser.onweixin就可以判斷了,比如:

if (laya.browser.onweixin)

laya 微信小遊戲 分享 功能

此功能的要點同,如何取得wx,if laya.browser.onminigame this.wx laya.browser.window.wx 然後通過wx.createcanvas 建立乙個離屏canvas.然後通過canvas.getcontext 2d 取得context,再通過contex...

微信小遊戲Laya引擎聲音Bug的解決方案

於是在你面前有2條路,一條是研究引擎 看能否找出bug隱藏在什麼地方,這條路往往比較艱難。第二條是使用egret白鷺引擎的聲音 來代替 laya聲音api,繞開這個問題。作為egret引擎資深開發者的我來說,毫不猶豫的選擇了第二條路。也許你會說,自己是laya引擎的鐵桿,egret也不熟,怎麼辦?沒...

Laya微信小遊戲本地快取

測試版本2.1.1.1 檢視bin libs laya.wxmini.js。發現只會快取png,jpg。聲音和atlas,json不會快取。對比白鷺,白鷺是將png,jpg,atlas,json都進行了快取。且可以設定哪些需要快取,哪些不需要。這一點方便多了。miniadpter.init初始化時,...