首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

Cocos2d 基礎概念 (5) - Effects 效果系統

     編輯:關於.NET

Effects 簡介

Effects(效果) 是一系列特殊動作。不同於修改透明度、位置、旋轉、縮放等常規屬性,Effects 修改的是一種新屬性 —— Grid(網格)屬性。

Grid 就像一個矩陣,由網格線組成一系列方塊。這些特殊動作能將任何 cocosNode 物件(層、場景、精靈等)轉換為 Grid,進而通過操作頂點實現變形效果。

兩種 Grid 類型

  • Tiled Grid(平鋪網格):由獨立的 tile 組成,各 tile 可分離變形
  • Non-Tiled Grid(非平鋪網格):由頂點組成,所有方塊連成一體
Tiled vs Non-Tiled Grid

Grid 維度與效能權衡

  • Grid 有兩個維度:行與列
  • 每個頂點擁有三個維度:X、Y、Z,可建立 2D 或 3D 效果(對應 TiledGrid3D / Grid3D)
  • 增加 Grid 大小(行列數)可提升效果品質,但會降低執行速度
  • 經驗值:(16,12) 速度極快但效果一般;(32,24) 效果優但 iPhone 1 代裝置可能不夠流暢

運作原理

  1. 每幀將螢幕渲染至一個紋理
  2. 紋理轉換為頂點陣列
  3. 頂點陣列經 Grid 效果變換
  4. 最終渲染至螢幕

進階設定:啟用 3D 效果所需的深度緩衝與像素格式

使用 3D 動作(名稱以 3D 結尾)需啟用深度緩衝:

// 在執行第一個場景前呼叫
// 建立 24-bit 深度緩衝,OpenGL 會考慮 Z-order
[[Director sharedDirector] setDepthBufferFormat:kDepthBuffer16];

同時建議設定 RGBA8888 像素格式以支援透明效果:

// 在執行第一個場景前呼叫
// 使用此像素格式獲得透明緩衝
[[Director sharedDirector] setPixelFormat:kRGBA8];

效果索引

可用的 Grid3DAction(非平鋪網格)

  • FlipX3D / FlipY3D
  • Lens3D
  • Liquid
  • Ripple3D
  • Shaky3D
  • Twirl
  • Waves / Waves3D

可用的 TiledGrid3DAction(平鋪網格)

  • FadeOutBLTiles / FadeOutTRTiles / FadeOutUpTiles / FadeOutDownTiles
  • JumpTiles3D / ShakyTiles3D / ShatteredTiles3D / ShuffleTiles
  • SplitCols / SplitRows
  • TurnOffTiles / WavesTiles3D

實際程式碼範例

// 在 sprite1 上執行 Waves 動作
id waves = [Waves actionWithWaves:5 amplitude:20 horizontal:YES vertical:NO 
            grid:ccg(15,10) duration:5];
[sprite1 runAction: [RepeatForever actionWithAction:waves]];

// 在 sprite2 上執行 Shaky3D 動作
id shaky = [Shaky3D actionWithRange:4 shakeZ:NO grid:ccg(15,10) duration:5];
[sprite2 runAction: [RepeatForever actionWithAction:shaky]];

出處:https://alexliu.cnblogs.com/

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved