スポンサーサイト

--.--.--.--.--:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ジャンプ処理

2014.05.17.Sat.14:00
もう初夏の陽気ですね
どうもすでに夏バテ気味のbaririnです。

さて、主人公のジャンプ処理に関してJumpModifierってのを発見しました。
ドキュメントを読めば一発でわかることだったのですが、ちゃんと読み込まないといけませんね。

もともとTimerHandler内でジャンプ処理を呼び出していたのですが、
うちの古いスマホさんでは画面描写の動きが重く、スマホの発熱量が多いんですよね。

で、TimerHndlerからジャンプ処理を切り抜いて、
onSceneTouchEventから直接ジャンプ処理を呼び出すようにしました。
さらに、ジャンプ処理をJumpModifierに任せることで、重力計算など煩雑なものはすべてAndEngineに喰ってもらうように変更。

JumpModifierはこんな感じ
JumpModifier jm = new JumpModifier(ジャンプ時間, 開始X座標, 開始Y座標, 着地X座標, 着地Y座標, 高さ);

もやし大戦のように主人公の開始座標、着地座標が同じ場合は

JumpModifier jm = new JumpModifier(2.0f, Sprite.getX(), Sprite.getY(), Sprite.getX(), Sprite.getY(), 100);
のようにするとその場でジャンプしてくれます。

ただ、2段ジャンプでは開始座標、着地座標が空中となるため、もやし君が空中を走るという困った事象が(--;
苦肉の策として、

Sprite.registerEntityModifier(new SequenceEntityModifier(
new JumpModifier(
1.0f,
開始X座標,開始Y座標,
着地X座標,着地Y座標,
100),
//地面まで落ち切りたい
new MoveYModifier(1.0f, Sprite.getY(), 地面のY座標)));
のように、ジャンプ処理後に無理やり地面まで叩きつけてます(汗

地面と接触した際には、Sprite.clearEntityModifiers();によりSpriteの動きを止めて地面の上にSpriteを再描写させればOK
(あれ?ブログ書いてて思ったけど、着地Y座標を地面のY座標にすれば落ち切ってくれるのかな?)

ちょっと無理やり感も否めませんが、TimerHandler内でのジャンプ処理を減らせたので気持ち動きが軽くなりました。

でも難点が一つ。。。

ジャンプ中に一時停止をするともやし君が地面にめり込みます(TT
Sprite.clearEntityModifiers()ではなく
Modifierを一時停止することってできないのかなぁ~と悩み中。。。
スポンサーサイト
コメント
管理人のみ閲覧できます
このコメントは管理人のみ閲覧できます

管理者にだけ表示を許可する
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。