Skip to main content
和真橋99141741
Participant
March 11, 2018
Answered

エクスプレッションの.speedが認識されません。

  • March 11, 2018
  • 1 reply
  • 719 views

【概要】

AfterEffectsでエクスプレッションを使おうとしているところ、エラーが出てしまって困っています。

エラーメッセージによると、「.speed」が認識されていないようです。

【状況説明】

あるレイヤー"bird"に対して、

レイヤーが右(x軸正の向き)に進んでいる時は右向きに、左(x軸負の向き)に進んでいる時は左向きになるようにしたいです。

(2Dゲームのキャラが右に進む時右を向き、左に進むときに左を向くようなイメージです!)

そこでレイヤー"bird"のスケールに「位置xが増加しているときはスケールxの値を100に、減少している時は-100にする

ようなエクスプレッションを以下のように記述しました。

sp=thisComp.layer("bird").transform.position[0].speed;

if(sp>0){[100,100]};

すると、

以下のようなエラーが出てきてしまいました。

私はプロパティの変化速度を指定する意図でposition[0]の後に「.speed」とつけたのですが、

エラーメッセージの内容は、speedがプロパティとして認識できないとなっています…。

インターネットでspeedの使い方についてなどを検索しましたが、なかなか答えが見つからず、困っています。

原因がわかる方はいらっしゃいますか?

また、私のやりたいことを実現するにはどのようにしたら良いですか?

私の環境は以下の通りです。

OS:MacOS HighSierra

バージョン:10.13.3

AfterEffects CC バージョン15.0.0

教えていただけると嬉しいです。

よろしくお願いします。

This topic has been closed for replies.
Correct answer Mukaida

例えば、下記の記述で現在時間のX位置と1フレーム前のX位置の差を求めることができます。

var xp=thisComp.layer("bird").transform.position.valueAtTime(time);

var a=time-thisComp.frameDuration;

var axp=thisComp.layer("bird").transform.position.valueAtTime(a);

var sp=xp[0] - axp[0];

<追記>

4行目をsp= に変更したので、このままコピーして1行目の文と入れ替えてもらえば、何か動作すると思います。

1 reply

Community Expert
March 11, 2018

speedは、移動する方向に関係ないようなので、[0] は削除して試してください。

和真橋99141741
Participant
March 11, 2018

返信ありがとうございます!
[0]を消したらエラーがなくなりました!!

ただ、そうすると位置Yの時間変化も計算に含まれてしまうので、私が求めている結果(X軸成分のみを加味する)とは異なる結果が得られました…。
とはいえ、speedが移動する方向に関係ないと教えていただいたことで、正解に一歩近づきました!ありがとうございます!

MukaidaCommunity ExpertCorrect answer
Community Expert
March 12, 2018

例えば、下記の記述で現在時間のX位置と1フレーム前のX位置の差を求めることができます。

var xp=thisComp.layer("bird").transform.position.valueAtTime(time);

var a=time-thisComp.frameDuration;

var axp=thisComp.layer("bird").transform.position.valueAtTime(a);

var sp=xp[0] - axp[0];

<追記>

4行目をsp= に変更したので、このままコピーして1行目の文と入れ替えてもらえば、何か動作すると思います。