<tbody id="suqa6"></tbody>
  • <acronym id="suqa6"><kbd id="suqa6"></kbd></acronym>
    <acronym id="suqa6"></acronym>
  • 官方自研源碼!大熱的推金幣 3D 小游戲來了

    Cocos 官方 Demo Team 最新 3D 游戲作品《金幣推推推》正式上線!項目完整開源,含工程源碼、美術資源、策劃文檔,支持 Cocos Creator 3.3。

    《金幣推推推》以傳統推幣機為原型,玩家通過投擲并堆積金幣,利用推板將金幣/獎品往前推,金幣/獎品掉落即為玩家所得。這類游戲玩法簡單但又有很強的技巧性,近年來更是頻頻出現在各大電商平臺的互動營銷中,衍生出各種新鮮有趣的玩法。

    在本款源碼中,大家中可以看到i18n 多語言支持、方便實用的 3D 數字顯示、AudioSource 全局聲音播放等很多常用功能,此外游戲基于物理系統開發,對不同平臺的物理性能進行了測試,供大家參考。

    i18n 游戲多語言支持

    i18n(其來源是英文單詞 internationalization 的首末字符 i 和 n,18為中間的字符數)是“國際化”的簡稱,通常與 i18n 相關的還有 l10n(“本地化”的簡稱)。i18n 能在不修改內部代碼的情況下,根據不同語言及地區顯示相應的界面。

    引擎組在近日基于 v3.x 重新升級了 i18n 插件,目前,Cocos Creator 2.x 及 3.x 均可使用 i18n 插件,通過這個插件我們可以實現 Label 和 Sprite 組件的多語言國際化(i18n)。此次《金幣推推推》即使用 i18n 插件實現了基于 label 和 sprite 的 2D 和有 meshRender 組件的 3D 在內的3種中英文切換。

    對游戲來說,國際化與本地化意味著面向更廣闊的人群與市場,是開發中不可忽視的一環。之后,引擎組也將不斷完善 i18n 在引擎中的功能與使用體驗。

    AudioSource 全局聲音播放

    Creator 2.x 中,播放音樂有兩種方法:AudioSource 組件或 AudioEngine,這兩種音樂的播放實際上都是對 AudioClip 資源對象的控制。

    而到了 Creator 3.x,AudioEngine 相關的API 被移除,同時 AudioClip 資源本身 play(),pause(),stop() 等控制方法也不被提倡,使用時將被提示: deprecated since v3.1.0, please use AudioSource.prototype.playOneShot() instead 。那么可使用的音樂播放方式就是 AudioSource 組件了。

    AudioSource 組件是掛載在場景的各種節點上的,那么它會隨著掛載節點的銷毀而停止,可以將其節點設置為常駐節點實現全局音效播放。

    • 同一個節點下可以存在多個 AudioSource 組件,如果游戲中可能出現多個音效同時播放的情況,可以通過多個 AudioSource 組件播放實現效果。
    private _getAudioSource(clip: AudioClip) {
        let result: AudioSource | undefined;
        for (let i = 0; i < this._audioSources.length; ++i) {
            let audioSource = this._audioSources[i];
            if (!audioSource.playing) {
                result = audioSource;
                break;
            }
        }
        if (!result) {
            result = this._persistRootNode.addComponent(AudioSource);
            this._audioSources.push(result);
        }
        result.node.off(AudioSource.EventType.ENDED);
        result.clip = clip;
        result.currentTime = 0;
        return result;
    }
    playMusic(name: string, loop: boolean) {
        ···
        let source = this._getAudioSource(clip);
        ···
        source.play();
    }
    • 對于播放時間短,但是播放的數量多的音樂可以使用 AudioSource 組件提供的 playOneShot 方法去播放, playOneShot 是一次性播放操作,播放后的聲音沒法暫?;蛲V共シ?,也沒法監聽播放結束的事件回調。

    3D 場景中的數字顯示

    在《金幣推推推》里,3D 場景中的推幣機面板上顯示著金幣數量。在 3D 場景中展示數字最常見的方法就是使用 2D 的文字顯示組件 Lable 去模擬 3D 效果,甚至使用位圖字體來追求完美。那么,有沒有什么方法能讓我們在不使用 2D 組件的情況下,在 3D 場景中顯示數字呢?

    《金幣推推推》使用了 numfont 腳本來實現這一效果。numfont 腳本?于 3D 顯示數字并且?動對?,?動兼容數字的位數改變每個數字??。

    舉個例子,比如顯示92,那么9和2每一個數字都是一個單獨的 3D 節點,動態地對兩個節點進行位置、大小、材質的設置進而實現連續數字的展現,說白了就是每個數字都是一個 3D 節點,將多個節點通過計算拼湊起來。

    如上圖所示,我們可以通過設置 horizontalAlign,來支持左、中、右三種對齊方式,通過設置數字顯示的范圍來調整數字字體的大小。

    物理系統/性能

    物理系統是指在游戲對象上實現加速度、碰撞、重力、摩擦力及各種外力作用的一系列功能集合,是游戲開發中不可缺少的一部分。不同平臺下,不同物理系統的性能存在不同的差距,因此,對應不同平臺、選擇不同的物理系統就非常重要。

    Cocos Creator v3.x 為了給開發者提供更好、更多的選擇,內部集成了多種物理引擎,包括世界三大物理引擎中的兩個:Bullet 和 PhysX,以及使用 JavaScript 編寫的 3D 物理引擎 cannon.js。

    在游戲開發過程中,如何針對不同平臺選擇合適的物理引擎呢?我們以《金幣推推推》為例,來對項目中使用的物理系統的性能進行測試,具體測試結果如下:

    • web 平臺:Bullet 的性能更優。
    • iOS 平臺:PhysX 的性能更優。

    資源鏈接

    《金幣推推推》源碼為大家提供了完整的項目結構和常用功能的封裝,相信能給小伙伴們帶來不同程度的幫助,歡迎大家一起交流學習。

    Cocos 官方 Demo Team 現已推出了多款游戲源碼,同時更邀請各路大神陸續輸出配套文字/視頻教程。大家可以在公眾號后臺回復游戲名(如:幽靈射手),獲取相關游戲的全套資源鏈接。

    自研源碼 list

    3D 射擊《幽靈射手》

    io 類 3D《奔跑吧小仙女》

    3D 冒險《奔跑吧巨人》

    經典 2D 消除《天天消一消》

    国产亚洲精品视觉盛宴,日韩 精品 综合 丝袜 制服,一个添下面两个吃奶把腿扒开,国产真实露脸乱子伦