LoginSignup
2
2

More than 5 years have passed since last update.

TexturePacker をrakeタスクから使う

Last updated at Posted at 2013-05-05

さいきん、iOS + OpenGLで、ドット絵のゲームを作っているのですが、描いた絵をプログラムで動かすまでに以下のフローをふんでいます。

  1. Pixen でドット絵を描く&アニメーションを編集する
  2. 編集したアニメーションをgifアニメで保存
  3. ImageMagickでgifアニメをバラバラのpngファイルにする
  4. TexturePacker でスプライトシートにする。

iOS向けだと、Retina用に2倍のサイズもこしらえないといけなので絵を直すたびにこれをするのは手間です。
TexturePackerはとても気が効いているツールで、コマンドラインインターフェイスも提供しているので、この手順は全部コマンドラインからできます。
数ステップあるので、rakeタスクをこしらえました。

cocos2dユーザ は、--format をcocos2dにすればそのままつかえるとおもう。

require 'rake/clean'
require 'pathname'

ROOT       = `git rev-parse --show-toplevel`.chomp
ASSETS     = "#{ROOT}/assets"
FRAMES     = "#{ROOT}/assets/frames"
RESOURCES  = "#{ROOT}/Resources"

CLEAN.include "#{RESOURCES}/*.json", "#{RESOURCES}/*.png"

directory FRAMES

task :default => [:split, :tp]

desc "gif animation split to png files"
task :split => FRAMES do
  Dir["#{ASSETS}/*.gif"].each do |gif|
    png = File.basename(gif).sub(/\.gif/, '.png')
    sh "convert +adjoin #{gif} #{File.join FRAMES, png}"
  end
end

desc "TexturePacker packing"
task :tp do
  sh "TexturePacker "<<
     "  --smart-update " <<
     "  --scale 2.0 " <<
     "  --scale-mode Fast " <<
     "  --format json-array " <<
     "  --data #{RESOURCES}/entities@x2.json " <<
     "  --sheet #{RESOURCES}/entities@x2.png " <<
     FRAMES

  sh "TexturePacker "<<
     "  --smart-update " <<
     "  --format json-array " <<
     "  --data #{RESOURCES}/entities.json " <<
     "  --sheet #{RESOURCES}/entities.png " <<
     FRAMES
end
$ rake -T
rake clean    # Remove any temporary products.
rake clobber  # Remove any generated file.
rake split    # gif animation split to png files
rake tp       # TexturePacker packing

TexturePacker をインストールしたら、ツールバーメニューからTexturePacker → Install Command Line Tool で、TexturePackerコマンドをインストール。

公式サイトや以下でヘルプがみれる。

TexturePacker --help
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2