FC2ブログ

Entries

cocos2d 動作:加減速(Ease) を日本語訳の巻

iPhone の 2D ゲームを簡単に作れるライブラリ、cocos2d のプログラミングガイド日本語訳。

今回は Ease アクションというアクションですね。

加速度を変えることによってアクションに深みを出すことができるようです。

シューティングゲームの敵キャラとかに適用するといいかもしれませんね。

では読んでみましょう。

※Ease って緩やかにとかいう意味なんですが、加速度を変えるアクションみたいなので、加減速アクションと名づけてみました。異論は認めます。

------------------------------------
<目次
動作:加減速(Ease)

加減速(Ease)動作は内部アクションの時間を変化させる特別な構成アクションです。

Flash 開発では、Tweening や Easing と呼ばれるアクションです。


このアクションは、内部アクションの速さを、実行する期間を変えずに変化させます。

内部アクションが5秒動作を続けるのであれば、5秒間、動作が続きます。

Ease 動作は、線形的に時間を変化させます。



たとえば、これらのアクションは、内部アクションを加速したり減速したりできます。

これらのアクションは3つの種類に分類できます。

インアクション:アクションの開始時に加速します。
アウトアクション:アクションの終了時に加速します。
インアウトアクション:アクションの開始時と終了時に加速します。

さらなる情報は下記のサイトでご参照ください。

http://hosted.zeh.com.br/tweener/docs/en-us/misc/transitions.html
http://www.robertpenner.com/easing/easing_demo.html

加減速(Ease)アクション



内部アクションを以下の式で加速します。

-(void) update:(ccTime) t
{
[inner update: powf(t,rate)];
}


バリエーション:
CCEaseIn: 開始時に加速
CCEaseOut: 終了時に加速
CCEaseInOut: 開始および終了時に加速

引数「rate」は加速度を表します。
The rate argument indicates the acceleration rate.

Example:
// acceleration at the beginning
id action = [CCMoveTo actionWithDuration:2 position:ccp(100,100)];
id ease = [CCEaseIn actionWithAction:action rate:2];
[sprite runAction: ease];
 
// acceleration at the end
id action = [CCMoveTo actionWithDuration:2 position:ccp(100,100)];
id ease = [CCEaseOut actionWithAction:action rate:2];
[sprite runAction: ease];
 
// acceleration at the beginning / end
id action = [CCMoveTo actionWithDuration:2 position:ccp(100,100)];
id ease = [CCEaseInOut actionWithAction:action rate:2];
[sprite runAction: ease];


加減速指数関数(EaseExponential)アクション



使用可能な指数関数アクションは以下です:

CCEaseExponentialIn
CCEaseExponentialOut
CCEaseExponentialInOut

例:
id scaleAction = [CCScaleTo actionWithDuration:2.5 scale:.8];
id easeAction = [CCEaseExponentialIn actionWithAction:scaleAction];
[label runAction: easeAction];


加減速Sin関数(EaseSin)アクション



使用可能なSin関数アクションは以下です:

CCEaseSineIn
CCEaseSineOut
CCEaseSineInOut

例:
// Sine at the beginning
id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [CCEaseSineIn actionWithAction:move];
[sprite runAction:action];
 
// Sine at the end
id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [CCEaseSineOut actionWithAction:move];
[sprite runAction:action];
 
// Sine at the beginning and at the end
id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [CCEaseSineInOut actionWithAction:move];
[sprite runAction:action];


加減速弾性(EaseElastic)アクション



このアクションは、ゴムの伸び縮み(弾性)動作をシュミレートする時間変化をおこないます。

弾性アクションは1より大きく0より小さい時間値を使用するため、内部アクションはこの特別な値に対応すべきです。

いくつかの値は一度以上誘発される(この関数は全単射ではない)ので、もう一度言いますが、内部アクションはこう言った値に対応すべきです。

CCMoveBy や CCScaleBy や CCRotateBy といった単純なアクションは 加減速弾性(EaseElastic)アクションと一緒に動作できますが、CCSequence や CCSpawn アクションでは予期しない結果となるでしょう。

使用可能な弾性アクションは以下です:
CCEaseElasticIn
CCEaseElasticOut
CCEaseElasticInOut

例:
// 'period' is how elastic is the action.
// recommended values: between 0.3 and 0.45
 
// Elastic at the beginning
id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [CCEaseElasticIn actionWithAction:move period:0.3f];
[sprite runAction: action];
 
// Elastic at the end
id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [CCEaseElasticOut actionWithAction:move period:0.3f];
[sprite runAction: action];
 
// Elastic at the beginning and at the end
id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [CCEaseElasticInOut actionWithAction:move period:0.3f];
[sprite runAction: action];


加減速バウンス(EaseBounce)アクション

加減速バウンス(EaseBounce)アクションは、ボールのバウンド動作をシュミレートします。

いくつかの時間値は一度以上誘発される(このアクションは全単射ではない)ので、内部アクションはこの値に対応すべきです。

CCMoveBy や CCScaleBy や CCRotateBy といった単純なアクションは 加減速バウンス(EaseBounce)アクションと一緒に動作できますが、CCSequence や CCSpawn アクションでは予期しない結果となるでしょう。

使用可能なバウンスアクションは以下です:
CCEaseBounceIn
CCEaseBounceOut
CCEaseBounceInOut

例:
// Bounce at the beginning
id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [CCEaseBounceIn actionWithAction:move];
[sprite runAction: action];
 
// Bounce at the end
id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [CCEaseBounceOut actionWithAction:move];
[sprite runAction: action];
 
// Bounce at the beginning and at the end
id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [CCEaseBounceInOut actionWithAction:move];
[sprite runAction: action];


加減速バック(EaseBack)アクション



いくつかの時間値は一度以上誘発される(このアクションは全単射ではない)ので、内部アクションはこの値に対応すべきです。

CCMoveBy や CCScaleBy や CCRotateBy といった単純なアクションは 加減速バウンス(EaseBack)アクションと一緒に動作できますが、CCSequence や CCSpawn アクションでは予期しない結果となるでしょう。

使用可能なバックアクションは以下です:

CCEaseBackIn
CCEaseBackOut
CCEaseBackInOut

例:
// Back at the beginning
id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [CCEaseBackIn actionWithAction:move];
[sprite runAction: action];
 
// Back at the end
id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [CCEaseBackOut actionWithAction:move];
[sprite runAction: action];
 
// Back at the beginning and at the end
id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [CCEaseBackInOut actionWithAction:move];
[sprite runAction: action];


動作:速度

速度(Speed)アクション

CCSpeed アクションは内部アクションの期間を変更します。


id move = [CCMoveBy actionWithDuration:3 position:ccp(350,0)];
id action = [CCSpeed actionWithAction: move speed:1.0f]; // no speed modification
 
// but you can modify the speed later
[action setSpeed: 2.5f]; // speed is 2.5 faster
 
[action setSpeed: 0.5f]; // speed is 0.5 faster (it means 2 times slower)


--------------------------

みやちかんたろうの大冒険にでてくるバーンマンは Sin 関数で動作しています。

CCEaseSinXX を使えば実現できるのかなぁ。どうなのかなぁ。という感じですね。

あと、振幅とかはどう指定するんでしょうか。

謎が深まってきました。実際に動かしてみないとわかんないんで、

後ほどやってみますね。
スポンサード リンク

コメント

コメントの投稿

コメントの投稿

管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://miyachikantaro.blog.fc2.com/tb.php/16-657a72a9
この記事にトラックバックする(FC2ブログユーザー)

Appendix

出演ゲーム

みやちかんたろうの大冒険

↑インストールはこちらから
予告編

21面デモ

ステージ作成

検索フォーム

訪問者

Apple製品紹介

Apple MacBook Air 1.6GHz 13.3インチ MB003J/A

中古価格
¥59,800から
(2013/1/24 06:45時点)

QRコード

QR

メールフォーム

名前:
メール:
件名:
本文:

Extra

プロフィール

みやちかんたろう

Author:みやちかんたろう
種別:きいろいねこ
年齢:10歳
性別:オス
趣味:昆虫採集
twitter:@gatsupport

※このサイトはリンクフリーです。ご自由にリンクしてください。相互リンクもじゃんじゃん募集中です!!

最新記事

最新コメント

最新トラックバック

月別アーカイブ