Skip to main content
yuki212
Participating Frequently
April 9, 2024
Answered

エクスプレッションのエラーについて

  • April 9, 2024
  • 1 reply
  • 1557 views

テキストが頭から順に交互に上下から出現するエクスプレッションを記述したのですが、[位置]の2行目で「結果を数値に変換できませんでした」とエラーが出てしまいます。

色々調べたのですが解決しないため原因が分かる方がいらっしゃいましたらご教示いただけますと幸いです。


[量]

if((textIndex%2)==0){

selectorValue;

}else{

-selectorValue;

}


[位置]

t = time - inPoint + textIndex * 0.1;
y = easeOut(t, 0, 0.5, 100, 0);

[0, y]

    This topic has been closed for replies.
    Correct answer Mukaida

    ありがとうございます。また、設定の共有まで気が回らず失礼いたしました。

     

    仰る通り動画のアニメーションはキーフレームで作成したものになります。

    テキストを分解せずアニメーターで同じ動きをつけたいと思ったのですが、緩急あるアニメーションは再現出来ないのですね。

    勉強になりました、ご回答いただきありがとうございます。


    Easeを使うと設定はできませんが、数式で記述すれば色々な曲線を描くことができるので、希望した動きに近づけることができます。


    中学校で習う二次方程式を使えば、3点を通る曲線が描けるので試してみましたが、緩急がきつい場合は、緩いところで曲線が膨らんで反対方向にはみ出してしまうため、不可でした。


    Expressionのプリセットにある 関数 Math.Pow()を使用した計算式が近い動きになると思います。


    1番目のモーション:

     

     

    //1番目
    let t = time-inPoint;
    let amp = 100;
    let f = 0.5; // デュレーション
    let e = linear(t,(textIndex-1)/textTotal*f,textIndex/textTotal*f,0,1);
    let up = amp*Math.pow( 2, -5 * e);
    let down = -amp*Math.pow(2, -5 * e);
    if(textIndex % 2 == 0){
    up;
    }else{
    down;
    }

     

     


    2番目のモーション:

     

     

    //2番目
    let t = time-inPoint;
    let amp = 100;
    let f = 0.4; // デュレーション
    let e = linear(t,(textIndex-1)/textTotal*f,textIndex/textTotal*f,0,1);
    let up = amp*Math.pow( 2, -10 * e);
    let down = -amp*Math.pow(2, -10 * e);
    if(textIndex % 2 == 0){
    up;
    }else{
    down;
    }

     

     

     

     

     

    1 reply

    Community Expert
    April 10, 2024
    量のコードは、
    let t = time-inPoint;
    let f = 0.5; // デュレーション
    let up = easeOut(t,(textIndex-1)/textTotal*f,textIndex/textTotal*f,100,0);
    let down = easeOut(t,(textIndex-1)/textTotal*f,textIndex/textTotal*f,-100,0);
    if(textIndex % 2 == 0){
    up;
    }else{
    down;
    }
     
    位置のエクスプレッションは削除して値を0,100にして下さい。
    これでどうでしょうか。
    yuki212
    yuki212Author
    Participating Frequently
    April 10, 2024

    頂いたエクスプレッションで正常に動作しました、ありがとうございます。

    追加の質問になってしまうのですが、もう少し動きにメリハリをつけることは可能なのでしょうか?理想としては動画の2つ目のようなアニメーションになります。

    Community Expert
    April 10, 2024

    参考動画の設定がわからないので、同じ動きにするのは難しいのですが、
    「位置」の値やデュレーション、Linear・EaseIn・EaseOutの設定により動きは変わってきます。

    1文字目の位置が他の文字より出現位置が中央寄りなので、下記のコードを作成してみました。
    また、デュレーションは、0.3~0.4秒の間になっています。

    let t = time-inPoint;
    let f = 0.348;	// デュレーション
    let s =  10	// 1文字目の位置調整
    let ups = easeOut(t,(textIndex-1)/textTotal*f-1/s,textIndex/textTotal*f,100,0);
    let downs = easeOut(t,(textIndex-1)/textTotal*f-1/s,textIndex/textTotal*f,-100,0);
    let up = easeOut(t,(textIndex-1)/textTotal*f,textIndex/textTotal*f,100,0);
    let down = easeOut(t,(textIndex-1)/textTotal*f,textIndex/textTotal*f,-100,0);
    if(textIndex == 1){
    	downs;
    }else if(textIndex % 2 == 1 && !(textIndex ==1)){
    	down;
    }else{
    	up;
    }