andengineで円・楕円のprimitiveな描き方

2013年11月28日木曜日

AndEngineExtention

t f B! P L
四角形・長方形は
Rectangleで描けますね

Rectangle rectangle = new Rectangle(float pX, float pY, float pWidth, float pHeight, VertexBufferObjectManager pVertexBufferObjectManager);

これです。
座標(pX,pY)から、幅(左に)pWidth、高さ(下に)pHeightの長方形を描くものです



しかし

円・楕円はこういった描画方法がありません。
事前に円形の画像を用意しておいて、Spriteとして表示するのが普通です。

別にこれで困るわけではないのですが、なんか無いのかなーと思いますね。

そこで、Meshクラスを使った楕円クラス(Ellipse class)を提供する拡張ライブラリが存在します

こちらのgitで公開している
AndEngineDebugDrawExtension
という拡張ライブラリです。
デバッグドローの名の通り、デバッグで利用することを目的としたライブラリらしいのですが、このEllipseクラスは実に役に立ちそう

早速導入を・・・と思ったのですが、何やらAndEngineのブランチが合わないのか、エラーが出てしまいます。

仕方ないのでライブラリ中のEllipse.javaとPoryLine.javaの入っているパッケージをコピーして自分のプロジェクトに持ってくることに。



PolyLineはAndEngine中のMeshクラスを継承して、EllipseはPoryLineを継承しています

Mesh←PolyLine←Ellipse

使い方はわかりやすく
Ellipse ellipse = new Ellipse(float pX, float pY, float pRadiusA, float pRadiusB, float pLineWidth, VertexBufferObjectManager pVertexBufferObjectManager)

こんな感じ。
座標(pX,pY)が中心で、横半径pRadiusA、縦半径pRadiusBの楕円を太さpLineWidthの線で描くものです。もうひとつResorutionという引数でポリゴンの数(円を構成する線の数)も設定できます。10とかに設定するとカクカクの円になり、100とかにすると綺麗な円になります。指定しなければ、勝手に必要なポリ数を設定してくれる見たい。


見てわかるとおり、線の太さはポリ線の傾きによって、縦向きか横向きに伸ばしているようですね。
なので線の太さを大きくすると傾きの境目がおかしなことになっています。

あとは塗りつぶしのやり方がよくわからないです
出来ないのかな?

やはりデバッグ用の描画機能ということでしょうか・・・

Translate

このブログを検索

  • ()
  • ()
もっと見る

QooQ