setVelocity(float pVelocity)
設定した速度で直線に移動 (値が大きい程早い)
faceSprite.setVelocity(100); // 斜め右下に 100 の速度で移動
値 1 つの場合は X, Y を同時指定
faceSprite.setVelocity(100);
値は X, Y を別々に指定可能
faceSprite.setVelocity(100, 200);
X のみ, Y のみを指定可能
faceSprite.setVelocityX(100); // X のみ指定 faceSprite.setVelocityY(200); // Y のみ指定
setAcceleration(float pAcceleration)
指定した加速度で直線に移動 (値が大きい程早く加速する)
faceSprite.setAcceleration(100); // 斜め右下に 100 の速度で加速
setAngularVelocity(float pAngularVelocity)
指定した速度で回転 (正:右回転、負:左回転)
※このメソッドは X, Y の指定ができません。
faceSprite.setAngularVelocity(100);
setEnabled(boolean pEnabled)
true:移動や回転などがはじまる
false:移動や回転などが止まる
faceSprite.setEnabled(false);
AlphaModifier(float pDuration, float pFromAlpha, float pToAlpha, IEntityModifierListener pEntityModifierListener, IEaseFunction pEaseFunction)
pDuration 時間で pFromAlpha から pToAlpha に変える
faceSprite.registerEntityModifier(new AlphaModifier(5.0f, 0.0f, 1.0f));
CardinalSplineMoveModifier(float pDuration, VardinalSplineMoveModifierConfig pCardinalSplineMoveModifierConfig, IEntityModifierListener pEntityModifierListener, IEaseFunction pEaseFunction)
CardinalSplineMoveModifierConfig(int pControlPointCount, float pTension)
pDuration 時間で 指定された point を pTension で指定された緩やかさ(値が大きいほどカクカク、マイナスだと丸びを帯びる感じ)で移動
pControlPointCount で指定した point と setControlPoint した数がアンマッチの場合はエラー
※1.0f でほぼ直線的?、2.0f だとなんかぐるっとバックする。-1.0f だと丸びを帯びて、-2.0f だと 2.0f とは反対方向にぐるっと回る感じでした
AndEngine Examples は -0.5f ~ 0.5f の範囲だったのでそれくらいがちょうどいいのかもです。
とりあえず CardinalSpline を画像検索するとわかりやすいと思います。
private static final CardinalSplineMoveModifierConfig pCardinalSplineMoveModifierConfig = new CardinalSplineMoveModifierConfig(5, -0.5f); public void move() { pCardinalSplineMoveModifierConfig.setControlPoint(0, 120, 60); pCardinalSplineMoveModifierConfig.setControlPoint(1, 180, 120); pCardinalSplineMoveModifierConfig.setControlPoint(2, 240, 120); pCardinalSplineMoveModifierConfig.setControlPoint(3, 300, 60); pCardinalSplineMoveModifierConfig.setControlPoint(4, 360, 120); this.registerEntityModifier(new CardinalSplineMoveModifier(5.0f, catmullRomMoveModifierConfig)); }
CatmullRomSplineMoveModifier(float pDuration, CatmullRomMoveModifierConfig pCatmullRomMoveModifierConfig, IEntityModifierListener pEntityModifierListener, IEaseFunction pEaseFunction)
CatmullRomMoveModifierConfig(int pControlPointCount)
CardinalSplineMoveModifier とほとんど同じですが、CardinalSplineMoveModifier がすべての線がなめらかになるのに対して、CatmullRomSplineMoveModifier は Point 間のみなめらかになるようです。(<1 href="http://markun.cs.shinshu-u.ac.jp/learn/cg/cg3/index5.html">http://markun.cs.shinshu-u.ac.jp/learn/cg/cg3/index5.html ← めっちゃわかりやすかったです)
private CatmullRomMoveModifierConfig pCatmullRomMoveModifierConfig = new CatmullRomMoveModifierConfig(5); public void move() { pCatmullRomMoveModifierConfig.setControlPoint(0, 120, 60); pCatmullRomMoveModifierConfig.setControlPoint(1, 180, 120); pCatmullRomMoveModifierConfig.setControlPoint(2, 240, 120); pCatmullRomMoveModifierConfig.setControlPoint(3, 300, 60); pCatmullRomMoveModifierConfig.setControlPoint(4, 360, 120); this.registerEntityModifier(new CatmullRomSplineMoveModifier(5.0f, pCatmullRomMoveModifierConfig)); }
ColorModifier(float pDuration, float pFromRed, float pToRed, float pFromGreen, float pToGreen, float pFromBlue, float pToBlue, IEntityModifierListener pEntityModifierListener, IEaseFunction pEaseFunction)
pDuration 時間で pFromColor から pToColor へ色を変化させる
※アルファを指定しても(new Color(1, 1, 1, 1))エラーはでませんでしたが、アルファは適用されませんでした
oAnimatedSprite.registerEntityModifier(new ColorModifier(5.0f, new Color(1, 1, 1), new Color(0, 0, 0)));
CubicBezierCurveMoveModifier(float pDuration, float pX1, float pY1, float pX2, float pY2, float pX3, float pY3, float pX4, float pY4, IEntityModifierListener pEntityModifierListener, IEaseFunction pEaseFunction)
pDuration 時間で (3 次元) ベジェ曲線を描きながら移動する
サンプルは↓の画像をセットした際の動き
http://www.w3.org/TR/SVG/images/paths/cubic02.svg
oAnimatedSprite.registerEntityModifier(new CubicBezierCurveMoveModifier(5.0f, 100f, 200f, 100f, 100f, 400f, 100f, 400f, 200f));