1. 程式人生 > 其它 >cocos creator 3.0見縫插針(口紅機)

cocos creator 3.0見縫插針(口紅機)

技術標籤:cocos creator

cocos creator3.0 見縫插針

效果展示

## gif 幀率較低 實際體驗效果更好

實現思路

1、中間一個節點 裡面有兩個node 分別放背景橘子node,存放刀的node
然後只旋轉這個中間節點讓刀和背景一塊旋轉就行了
2、碰撞檢測給每一把刀放上碰撞檢測
3、下邊放一把假的刀 用來做動畫執行,刀子到達位置 將假的刀放回原來的位置,將複製新的刀到中間存刀的節點
4、判斷下一關 將中間節點存刀的node判斷子節點數量
5、管卡難度
·勻速
·變速
·變速+變向
·時間限制

關鍵程式碼

   fire(event: any, data: any) {
        // 遊戲結束 或者當前沒有刀不能點選
        if (!this.gameStatus || this.knifeCount <= 0) {
            return
        }
        // 當前刀的數量減少
        this.knifeCount--;

        if (this.knife) {
            let p = this.knife.getPosition()
            p.x = 0;
            p.
y = 0; if (this.knifeSize) { p.y += this.knifeSize.height / 2; } let that = this /** * 執行線性動畫 * 動畫結束複製當前動畫的刀到當前位置 */ this.currentKnifeAnim = tween(this.knife) .to(0.1, { position:
p }, { easing: 'linear', onComplete: function (target?: object) { let node = instantiate(that.knife) if (node) { // 設定刀的位置 到初始位置 that.knife?.setPosition(that.knifeX, that.knifeY, 0) // 執行橘子動畫 向上彈 that.orangeNode?.getComponent(AnimationComponent)?.play() let px = 0, py = 0, ox = 0, oy = 0; if (that.knifeSize) { // 設定刀插進去的位置 py = that.knifeSize.height / 2 - that.orangeY; } /** * 2D上的點圍繞某另一個點旋轉: If you rotate point (px, py) around point (ox, oy) by angle theta you’ll get: * p'x = cos(theta) * (px-ox) - sin(theta) * (py-oy) + ox * p'y = sin(theta) * (px-ox) + cos(theta) * (py-oy) + oy */ // 計算角度 要一直為下方 注意補角 let temp = 360 - that.angle; let theta = Math.PI / 180 * temp let x = Math.cos(theta) * (px - ox) - Math.sin(theta) * (py - oy) + ox let y = Math.sin(theta) * (px - ox) + Math.cos(theta) * (py - oy) + oy // 設定新刀位置 node.setPosition(x, y, 0) // 設定新刀角度 node.setWorldRotationFromEuler(0, 0, temp) // 附加到虛擬轉盤上 node.parent = that.discNode } } }) .start() } }

試玩地址(載入慢,自己伺服器頻寬低)

 https://www.intkilow.top/jfcz/

下載地址

關注微信公眾號:
隨疾風前行
回覆:
cocos見縫插針遊戲原始碼

開源不易,僅學習使用