リンクをクリップボードにコピー
コピー完了
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
教えていただけると嬉しいです。
よろしくお願いします。
例えば、下記の記述で現在時間の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行目の文と入れ替えてもらえば、何か動作すると思います。
リンクをクリップボードにコピー
コピー完了
speedは、移動する方向に関係ないようなので、[0] は削除して試してください。
リンクをクリップボードにコピー
コピー完了
返信ありがとうございます!
[0]を消したらエラーがなくなりました!!
ただ、そうすると位置Yの時間変化も計算に含まれてしまうので、私が求めている結果(X軸成分のみを加味する)とは異なる結果が得られました…。
とはいえ、speedが移動する方向に関係ないと教えていただいたことで、正解に一歩近づきました!ありがとうございます!
リンクをクリップボードにコピー
コピー完了
例えば、下記の記述で現在時間の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行目の文と入れ替えてもらえば、何か動作すると思います。
リンクをクリップボードにコピー
コピー完了
なるほど!
そうして求めたx位置の差の正負によって場合分けすれば進み方の右向きと左向きで違う振る舞いをさせることができるのですね!
これをもとに動かしたら思っていた通りに動かすことができました!ありがとうございます!