E-moteキャラクターは吉里吉里のどのlayerにあるのでしょうか?

main BBS フォーラム システム・仕様系Q&A E-moteキャラクターは吉里吉里のどのlayerにあるのでしょうか?

このトピックには1件の返信が含まれ、2人の参加者がいます。5 年前 emote_ofc さんが最後の更新を行いました。

2件の投稿を表示中 - 1 - 2件目 (全2件中)
  • 投稿者
    投稿
  • #13497 返信

    salad

    e-moteが吉里吉里に使うと、キャラクターは吉里吉里のどのlayerにあるのでしょうか?
    背景layerやE-moteキャラクターlayerを同時に移動したいと思います!
    もし実現できたら、教えてください、ありがとうございます。

    #13498 返信

    emote_ofc
    キーマスター

    E-moteオフィシャルです!

    E-moteキャラはKAGのレイヤ系とは異なる座標系で動いています。
    そのため、KAGのレイヤとそのまま合わせてスクロールさせるにはちょっとした工夫が必要です。
    E-moteのカメラオフセットアニメーション機能を使って「およそ同程度」に合わせることになります。

    画面の横幅が800で、画面外にE-moteキャラと背景をスクロールアウトし、再び画面にスクロールインするケースで、3パターン紹介します。

    1) 加速度の指定がない場合
    シンプルに、レイヤはmoveタグで、emoteキャラはcxofs属性で動かします。

    
    [move layer=0 path="(-800,0,255)" time=1000]
    [emoteopt seg=0 cxofs=-800 time=1000]
    [wm]
    [emotewait seg=0]
    
    [p]
    
    [move layer=0 path="(0,0,255)" time=1000]
    [emoteopt seg=0 cxofs=0 time=1000]
    [wm]
    [emotewait seg=0]
    
    [p]
    

    2) 加速度の指定がある場合1
    moveタグのaccel属性による加速度指定とemoteoptのeasing属性による加速度指定は、計算式が違うため挙動が一致しません。
    そこで、元からずれて動くことを前提として「キャラが少し先に画面外へ出る」「キャラが少し遅く画面外へ入る」ように数値を指定します。
    例としては以下のようになります。

    [move layer=0 path="(-800,0,255)" time=1000 accel=2]
    [emoteopt seg=0 cxofs=-800 time=900  easing=0.7]
    [wm]
    [emotewait seg=0]
    
    [p]
    
    [move layer=0 path="(0,0,255)" time=1000 accel=-2]
    [emoteopt seg=0 cxofs=0 time=900 easing=-0.8]
    [wm]
    [emotewait seg=0]
    
    [p]
    

    3) 加速度の指定がある場合2
    moveタグのスプライン指定を使って、E-moteキャラのeasing指定をエミュレーションする手法で一致させます。

    まず、以下のような補助関数を定義します。

    [iscript]
    function easing_path(x1,y1,opa1,x2,y2,opa2,easing,div=10) {
      var exp;
      if (easing == 0) exp = 1;
      else if (easing > 0) exp = easing + 1;
      else exp = 1/(-easing + 1);
      var result = "";
      for (var i = 1; i <= div; i++) {
        var r = Math.pow(i/div,exp);
        result += "(%d,%d,%d)".sprintf(x1+(x2-x1)*r, y1+(y2-y1)*r, opa1+(opa2-opa1)*r);
      }
      return result;
    } 
    [endscript]
    

    この関数を使って、地点1から地点2へ移動するパスをeasingで加速度をかけた状態で生成し、moveタグに渡します。
    (エンティティの仕組みで関数に引き数を渡して計算するので、開始地点の座標値も指定する必要があります)。
    デフォルトでは経路を10分割して計算しているので、moveタグのtime属性は、emoteoptタグのtime属性の10分の1を指定します。

    [move layer=0 path="&easing_path(0,0,255,-800,0,255,2)" time=100 spline=true]
    [emoteopt seg=0 cxofs=-800 time=1000  easing=2]
    [wm]
    [emotewait seg=0]
    
    [p]
    
    [move layer=0 path="&easing_path(-800,0,255,0,0,255,-2)" time=100 spline=true]
    [emoteopt seg=0 cxofs=0 time=1000 easing=-2]
    [wm]
    [emotewait seg=0]
    
    [p]
    

    ご確認いただけますでしょうか。
    どうぞよろしくお願いいたします!

2件の投稿を表示中 - 1 - 2件目 (全2件中)
返信先: E-moteキャラクターは吉里吉里のどのlayerにあるのでしょうか?
あなたの情報:





<a href="" title="" rel="" target=""> <blockquote cite=""> <code> <pre> <em> <strong> <del datetime=""> <ul> <ol start=""> <li> <img src="" border="" alt="" height="" width="">