終了

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

Community Beginner ,
Mar 11, 2018 Mar 11, 2018

リンクをクリップボードにコピー

コピー完了

【概要】

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

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

【状況説明】

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

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

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

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

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

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

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

すると、

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

スクリーンショット 2018-03-11 18.54.58.png

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

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

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

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

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

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

OS:MacOS HighSierra

バージョン:10.13.3

AfterEffects CC バージョン15.0.0

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

よろしくお願いします。

表示

458

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines

correct answers 1 件の正解

Community Expert , Mar 11, 2018 Mar 11, 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行目の文と入れ替えてもらえば、何か動作すると思います。

投票

翻訳

翻訳
Community Expert ,
Mar 11, 2018 Mar 11, 2018

リンクをクリップボードにコピー

コピー完了

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

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Beginner ,
Mar 11, 2018 Mar 11, 2018

リンクをクリップボードにコピー

コピー完了

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

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

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Mar 11, 2018 Mar 11, 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行目の文と入れ替えてもらえば、何か動作すると思います。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Beginner ,
Mar 14, 2018 Mar 14, 2018

リンクをクリップボードにコピー

コピー完了

最新

なるほど!
そうして求めたx位置の差の正負によって場合分けすれば進み方の右向きと左向きで違う振る舞いをさせることができるのですね!

これをもとに動かしたら思っていた通りに動かすことができました!ありがとうございます!

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines