日記

cocos2d-xでドット絵をくっきり表示させる方法

最近はスマホゲーでもドット絵が流行ってたりするようですね。
でも、たまーにドット絵が売りなのにぼやけちゃってるのがあったりして残念な気持ちになったりするのです。
(昔のゲームはブラウン管でぼやけて表示されていたので、それを再現しているのかもしれませんが)

cocos2d-xも普通にドット絵を表示するとぼやけちゃいます。

auto sprite = Sprite::create("dot.png");
sprite->setPosition(0, 0);
sprite->getTexture()->setAliasTexParameters();
this->addChild(sprite);

こんな感じでOKです。
Texture2Dの”setAliasTexParameters()”を呼んであげるだけです。
これはスプライトではなく、テクスチャの設定なので、同じテクスチャを使いまわす場合は一回設定するだけで大丈夫です。
また、テクスチャアトラス(スプライトシート)を使う場合もすべてのスプライトフレームに反映されます。
ビットマップフォントに対しても同じように出来ます。

auto label = LabelBMFont::create("hoge", "font.fnt");
label->setPosition(0, 0);
label->getTexture()->setAliasTexParameters();
this->addChild(label);

2014/3/16 追記
v3.0rc0で試したところ、LabelBMFontにgetTexture()できなくなってました。
LabelBMFontの作りが大幅に変わって、中にLabelを持つ形に変更したようです。
で、元々のLabelBMFontの機能はLabelTTFとかとまとめてLabelに統合されたっぽいです。
これからLabelBMFontは非推奨になるんでしょうかね?
変更後のソースはこちらです。

auto label = Label::createWithBMFont("font.fnt", "hogehoge");
label->setAnchorPoint(Point(0.5, 0.5));
label->setPosition(POINT_C(0, 0));
label->getTexture()->setAliasTexParameters();
this->addChild(label);

引数の順番に注意です。フォントのファイル名が先になってます。
あと、LabelBMFontのアンカーポイントは中心でしたが、Labelは左下になるようです。
rc1で中心に修正されました。


せっかく技術的なこと書こうとしているのに、コメント欄がないのも如何なものかと思い、復活させてみました。
たぶん2年ぶりくらいかな。
自前で作った掲示板はスパムだらけで対応がめんどくなって撤去しちゃったので、こっちも二の舞いにならないといいなー。

2014/03/13



CAPTCHA