目次
忍者
3 層のアート
スプライトシート メーカー
画像形式
スプライトシートの公開
Cocos2d-X でスプライトシートを使用する
結論
ホームページ ウェブフロントエンド htmlチュートリアル アニメーションとスプライトシート_html/css_WEB-ITnose

アニメーションとスプライトシート_html/css_WEB-ITnose

Jun 21, 2016 am 09:08 AM

スプライトは単一のグラフィック画像です。画面上で移動したり、引き伸ばしたり、回転したり、歪めたり、フェードさせたり、色合いを変えたりすることができます。

スプライトシート とは、スプライトを 1 つのテクスチャ ファイルに集めたものです。これにより、指定した期間にわたってスプライトの表示フレームを順番に変更することで、単一のスプライトをアニメーション化することが簡単になります。映画のリールと同じように、スプライトシートは動きの錯覚を作成できます。

スプライトをスプライトシートに詰め込む利点は、ゲームに必要なテクスチャ メモリを実際に最適化できることです。スプライトの周囲の余分なスペースは、テクスチャから自動的にトリミングされ、実際のスプライトにロードされるときに再適用できます。スプライトに回転を適用すると、より多くのスプライトがテクスチャにきちんと収まるようになります。圧縮画像形式を使用すると、ゲームの速度と効率をさらに向上させることができます。これらのスプライトがどれほど密集しているかわかりますか?

この章では、忍者スプライトシートを作成し、それをゲームで使用する方法を学びます。

忍者

スプライトシートは、どのスプライト フレームを含めるかを決定します。プラットフォーマーの場合、必要なのは忍者が右に走ったりジャンプしたりするフレームだけです。 X 平面上で右向きのスプライトを反転して、左向きのスプライトを作成できます。

ランニング フレームには、ninja-running-e0000.png から ninja-running-e0007.png を使用します。ジャンプフレームの場合は、ninja-sidekick-e0000.png から ninja-sidekick-e0012.png までです。いくつかのスタンディング フレームも追加します: ninja-stopped0000.png から ninja-stopped0003.png まで。

3 層のアート

最近では、SD、HD、HDR の 3 層のアート アセットを作成するのに役立ちます。 (HD Retina)。 SD アセットは、画面解像度 480x320 の iPhone 3GS などの古いデバイスに使用されます。 HD アセットは、1024x768 の第 1 世代 iPad など、画面幅が 959 ピクセルを超えるデバイスに使用されます。 HDR アセットは、画面幅 >= 2000 ピクセル程度のデバイス、つまり 2048x1536 の iPad 3 に使用されます。

これほど多くのアート ファイルを作成するにはどうすればよいでしょうか?簡単。最高の解像度 (HDR) でアートを作成し、スプライトシート メーカーにそれを下位層 (SD および HD) 用にスケールダウンさせるだけです。

オリジナルの SD 忍者を HDR 解像度にスケールアップし、少しの解像度を使用することで、メディアンブラーを使用すると、見栄えの良い HDR スプライトを作成できます。

強化したいすべてのスプライトを含むフォルダーを作成し、それらをすべて一度に処理する Photoshop ドロップレットを作成しました。

ドロップレットは、カラー範囲を使用して茶色の背景色を削除し、次に別のカラー範囲を使用して影を削除します。次に、ドロップレットは、Bicubic Smoother 画像リサンプリングを使用して画像のサイズを 400% に設定します。最後に、3 ピクセルのノイズ >中央値が適用され、ファイルが保存されて閉じます。

完成した HDR ninja スプライトの zip ファイルは次のとおりです。

スプライトシート メーカー

スプライトシート メーカーは、スプライトのグループを取得し、それらをまとめてパックします。このチュートリアルでは、Texture Packer を使用します。または、Zwoptex を使用することもできます。

TexturePacker を開き、[フォルダーの追加] ボタンをクリックして、Ninja-HDR フォルダーを選択します。これにより、すべての Ninja スプライトがシートに追加されます。

次に、最適なテクスチャが作成されるようにスプライトシートを設定し、公開します。

スプライトシート設定

スプライトシートは、テクスチャ ファイルとデータファイル。テクスチャ ファイルは画像 (.png など) で、データ ファイルはテクスチャに含まれる各スプライト フレームに関する情報を含むプロパティ リスト (.plist) です。

TexturePacker にテクスチャ ファイルとデータ ファイルをエクスポートする場所を指示しましょう。データファイルの横にあるフォルダー/「...」ボタンをクリックし、保存したいフォルダーを参照するだけです。ゲームのアート アセット層には SD、HD、HDR フォルダーを作成する必要があることに注意してください。したがって、「HDR」という名前のフォルダーを作成し、「Ninja」というファイル名で保存します。

TexturePacker は、拡張子 .plist を自動的に追加して、Ninja.plist を作成し、Ninja.png テクスチャ ファイルも設定します。

ただし、PNG テクスチャ形式は非圧縮です。テクスチャの読み込みを高速化し、メモリ消費量を減らすために、「zlib 圧縮 PVR」(.pvr.ccz) 形式を使用します。 [テクスチャ形式]ドロップダウンから選択します。 TexturePacker の古いバージョンでは、コード内で PVRImagesHavePremultipliedAlpha:YES を設定することについて警告が表示される場合があります。 [無視] をクリックするだけです。

スプライト シートがテクスチャとしてロードされるときに消費するメモリ量を確認してください。この数値は TexturePacker ウィンドウの右下に表示されます。 「サイズ: 1024x1024 RAM: 4096 kB」のようなメッセージが表示されます。テクスチャ メモリの使用量を削減できるかどうか見てみましょう。

画像形式

テクスチャ形式の下に画像形式があることがわかります。デフォルトは RGBA8888 で、チャンネルあたり 8 ビット x 4 チャンネル (赤、緑、青、アルファ) を使用します。

[画像形式] ドロップダウンを開いて、他のオプションをいくつか試してください。各形式がスプライトシートのメモリ使用量にどのような影響を与えるかを観察してください。プレビューが変更され、ゲーム内でおおよそどのように見えるかが表示されます。

画像形式を RGBA8888 から変更すると、画質が少し低下し始める可能性があります。よりメモリ最適化された画像形式を使用しながら、再び正しく表示されるようにするには、いくつかのディザリング オプションを試してください。

画像形式を RGBA4444 に設定し、ディザリングを FloydSteinberg+Alpha に設定します。これらにより、RGBA8888 とほぼ同等の見栄えを保ちながら、半分のメモリを使用するテクスチャが得られます。サイズインジケーターには、「サイズ: 1024x1024 RAM: 2048 kB」のようなものが表示されます。

他の設定はすべてデフォルトで適切なはずです。自由に遊んで、スプライトシートがどのように影響を受けるかを見てください。

スプライトシートの公開

設定が完了したら、[公開] アイコンをクリックします。これにより、HDR/Ninja.pvr.ccz および HDR/Ninja.plist スプライトシート ファイルが保存されます。しかし、SD バージョンと HD バージョンはどうですか?

AutoSD ボタンをクリックして、「cocos2d-X HDR/HD/SD」プリセットを適用します。次に、データファイルとテクスチャファイルの「HDR」を「{v}」に置き換えます。 [パブリッシュ] に移動すると、HD フォルダーに 0.5 スケール シートが自動的に作成され、SD フォルダーに 0.25 スケール シートが作成されます。

これで、適切なサイズの Ninja.pvr.ccz を含む SD、HD、および HDR フォルダーが作成されました。

最終的な TexturePacker ファイルは次のようになります:

Cocos2d-X でスプライトシートを使用する

それでは、Cocos2d-X でスプライトシートを使用するにはどうすればよいでしょうか?最初に行う必要があるのは、テクスチャ ファイルをロードし、スプライト フレームをキャッシュすることです:

// set the appropriate resource directory for this deviceFileUtils::getInstance()->addSearchResolutionsOrder("HD");// load and cache the texture and sprite framesauto cacher = SpriteFrameCache::getInstance();cacher->addSpriteFramesWithFile("Ninja.plist");
ログイン後にコピー

スプライト フレームの 1 つを使用してスプライトを作成する方法は次のとおりです:

Sprite* someSprite = new Sprite;someSprite->initWithSpriteFrameName("ninja-stopped0000.png");
ログイン後にコピー

スプライト フレームの 1 つを個別に取得するには:

// get the sprite frameSpriteFrame* frame =  cacher->getSpriteFrameByName("ninja-sidekick-e0007.png");// set someSprite's display framesomeSprite->setSpriteFrame(frame);
ログイン後にコピー

アニメーションを再生するには:

#include <iomanip>// load all the animation frames into an arrayconst int kNumberOfFrames = 13;Vector<SpriteFrame*> frames;for (int i = 0; i < kNumberOfFrames; i++){  stringstream ss;  ss << "ninja-sidekick-e" << setfill('0') << setw(4) << i << ".png";  frames.pushBack(cacher->getSpriteFrameByName(ss.str()));}// play the animationAnimation* anim = new Animation;anim->initWithSpriteFrames(frames, 0.05f);someSprite->runAction(Animate::create(anim));
ログイン後にコピー

コード例は以上です。 SpriteFrame で他に何ができるかを確認したい場合は、Xcode を開き、Command キーを押しながら SpriteFrame をクリックしてください。 SpriteFrame クラスのインターフェースに移動し、そこで方法論を熟読できます。

結論

この章は以上です。

質問はありますか?以下にコメントを残してください。新しい章がリリースされたときに通知を受け取るように登録することもできます。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

HTML、CSS、およびJavaScriptの理解:初心者向けガイド HTML、CSS、およびJavaScriptの理解:初心者向けガイド Apr 12, 2025 am 12:02 AM

webdevelopmentReliesOnhtml、css、andjavascript:1)htmlStructuresContent、2)cssStylesit、および3)Javascriptaddsinteractivity、形成、

HTML:構造、CSS:スタイル、JavaScript:動作 HTML:構造、CSS:スタイル、JavaScript:動作 Apr 18, 2025 am 12:09 AM

Web開発におけるHTML、CSS、およびJavaScriptの役割は次のとおりです。1。HTMLは、Webページ構造を定義し、2。CSSはWebページスタイルを制御し、3。JavaScriptは動的な動作を追加します。一緒に、彼らは最新のウェブサイトのフレームワーク、美学、および相互作用を構築します。

HTML、CSS、およびJavaScriptの未来:Web開発動向 HTML、CSS、およびJavaScriptの未来:Web開発動向 Apr 19, 2025 am 12:02 AM

HTMLの将来の傾向はセマンティクスとWebコンポーネントであり、CSSの将来の傾向はCSS-in-JSとCSShoudiniであり、JavaScriptの将来の傾向はWebAssemblyとServerLessです。 1。HTMLセマンティクスはアクセシビリティとSEO効果を改善し、Webコンポーネントは開発効率を向上させますが、ブラウザの互換性に注意を払う必要があります。 2。CSS-in-JSは、スタイル管理の柔軟性を高めますが、ファイルサイズを増やす可能性があります。 CSShoudiniは、CSSレンダリングの直接操作を可能にします。 3. Webassemblyブラウザーアプリケーションのパフォーマンスを最適化しますが、急な学習曲線があり、サーバーレスは開発を簡素化しますが、コールドスタートの問題の最適化が必要です。

HTMLの未来:ウェブデザインの進化とトレンド HTMLの未来:ウェブデザインの進化とトレンド Apr 17, 2025 am 12:12 AM

HTMLの将来は、無限の可能性に満ちています。 1)新機能と標準には、より多くのセマンティックタグとWebComponentsの人気が含まれます。 2)Webデザインのトレンドは、レスポンシブでアクセス可能なデザインに向けて発展し続けます。 3)パフォーマンスの最適化により、応答性の高い画像読み込みと怠zyなロードテクノロジーを通じてユーザーエクスペリエンスが向上します。

HTML対CSS対JavaScript:比較概要 HTML対CSS対JavaScript:比較概要 Apr 16, 2025 am 12:04 AM

Web開発におけるHTML、CSS、およびJavaScriptの役割は次のとおりです。HTMLはコンテンツ構造を担当し、CSSはスタイルを担当し、JavaScriptは動的な動作を担当します。 1。HTMLは、セマンティクスを確保するためにタグを使用してWebページの構造とコンテンツを定義します。 2。CSSは、セレクターと属性を介してWebページスタイルを制御して、美しく読みやすくします。 3。JavaScriptは、動的でインタラクティブな関数を実現するために、スクリプトを通じてWebページの動作を制御します。

HTML:Webページの構造の構築 HTML:Webページの構造の構築 Apr 14, 2025 am 12:14 AM

HTMLは、Webページ構造の構築の基礎です。 1。HTMLは、コンテンツ構造とセマンティクス、および使用などを定義します。タグ。 2. SEO効果を改善するために、などのセマンティックマーカーを提供します。 3.タグを介したユーザーの相互作用を実現するには、フォーム検証に注意してください。 4. JavaScriptと組み合わせて、動的効果を実現するなどの高度な要素を使用します。 5.一般的なエラーには、閉じられていないラベルと引用されていない属性値が含まれ、検証ツールが必要です。 6.最適化戦略には、HTTP要求の削減、HTMLの圧縮、セマンティックタグの使用などが含まれます。

HTML対CSSおよびJavaScript:Webテクノロジーの比較 HTML対CSSおよびJavaScript:Webテクノロジーの比較 Apr 23, 2025 am 12:05 AM

HTML、CSS、およびJavaScriptは、最新のWebページを構築するためのコアテクノロジーです。1。HTMLはWebページ構造を定義します。2。CSSはWebページの外観に責任があります。

HTML:それはプログラミング言語か何か他のものですか? HTML:それはプログラミング言語か何か他のものですか? Apr 15, 2025 am 12:13 AM

htmlisnotaprogramminglanguage; itisamarkuplanguage.1)htmlStructuresandformatswebcontentusingtags.2)ItworkswithcsssssssssdjavascriptforInteractivity、強化を促進します。

See all articles